Android 如何优雅的集成FaceBook

FaceBook官网地址
FaceBook github地址

申请账号之类的本篇就不在多说,不会的请自行百度。
坑一:facebook 登录invalid key hash.the key hash does not macth any stoyed key has

建议使用代码里边打印的密钥散列
建议使用代码里边打印的密钥散列
建议使用代码里边打印的密钥散列
重要的事情说三遍,在终端里边输出的根本不能用,别问我为什么

@Override

public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
                
     try {
         PackageInfo info = getPackageManager().getPackageInfo(
                           "{your-package-name}", //Insert your own package name.  
                            PackageManager.GET_SIGNATURES);
         for (Signature signature : info.signatures) {
             MessageDigest md = MessageDigest.getInstance("SHA");
             md.update(signature.toByteArray());
             Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
             }
          } catch (NameNotFoundException e) {
                  
          } catch (NoSuchAlgorithmException e) {
                  
          }

然后是实现
Facebook自带登录按钮:

<com.facebook.login.widget.LoginButton
    android:id="@+id/login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="30dp"
    android:layout_marginBottom="30dp" /> 
  LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
  CallbackManager callbackManager = CallbackManager.Factory.create();
    // Callback registration
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
        }

        @Override
        public void onCancel() {
            // App code
        }

        @Override
        public void onError(FacebookException exception) {
            // App code
        }
    });
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        callbackManager.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
    }

自定义Facebook登录按钮

 <FrameLayout
            android:id="@+id/login_facebook_btn"
            android:layout_width="300dp"
            android:layout_height="40dp"
            android:layout_marginTop="30dp"
            android:background="@drawable/btn_circle_bg_selector"
            android:orientation="horizontal">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_marginLeft="28dp"
                android:scaleType="centerInside"
                android:src="@drawable/icon_login_fb" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="Facebook"
                android:textColor="@color/white"
                android:textSize="16sp" />

        </FrameLayout>
CallbackManager callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    // App code
                }

                @Override
                public void onCancel() {
                     // App code
                }

                @Override
                public void onError(FacebookException exception) {
                     // App code   
                }
    });
    
LoginManager.getInstance().logInWithReadPermissions(activity, Arrays.asList("public_profile"));
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        callbackManager.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
    }

至于用哪一种,就根据我们的实际需求自行选择了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值