集成Facebook SDK之Facebook登录

前言

  这几天应公司需求,需要在项目中接入facebook的登录,现在闲下来后再次巩固一下!


准备工作

  1. 保证自己的网络已经FQ,能够进入Facebook网页
  2. 准备一个FB的开发者账号,如果没有可以免费申请,附上官方网址

流程

  1、登录facebook后,点击左侧 “展开”栏,

 

  2、选择点击管理应用---添加新应用,创建新的应用,然后根据自己的需求选择相应的用途,根据他的要求填写就可以了。

  3、创建完毕后,添加产品时选择Facebook登录

  4、点击设置后,选择Android平台,然后按照FB的步骤完成。

这里具体演示下这些步骤

  1、下载这里就不讲解了

  2、导入Facebook SDK

    

        对应的在Android Studio中的是
        

      

      对应的在Android Studio中的是

    随后构建一下项目(点击上面锤子的icon按钮进行构建)

  3、在FB上填写Android项目信息,填写完后要Save一下

  4、添加密钥
    这个根据文档去输入相应的命令就可以得到密钥了,不过有的设置了密码的就需要输入密钥密码才能得到密钥,然后在FB的文档中填入这个生成的密钥就可以了,也需要记得Save一下。

  5、启用单点登录

    这个单击启用单点登录,然后Save

  6、根据Facebook上面的文档在AndroidStudio的相应位置添加代码

    1、打开您的 /app/res/values/strings.xml 文件。
    2、添加如下所示的代码:

<string name="facebook_app_id">应用编号</string> <string name="fb_login_protocol_scheme">fb+应用编号</string>

 

      3、打开 /app/manifest/AndroidManifest.xml 文件。

      4、在 application 元素后添加以下 uses-permission 元素:

<uses-permission android:name="android.permission.INTERNET"/>

      5、在 application 元素中添加以下 meta-data 元素、一个针对 Facebook 的 activity 元素以及一个针对 Chrome 自定义选项卡的 activity 元素和意向筛选条件:

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> <activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" /> <activity android:name="com.facebook.CustomTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="@string/fb_login_protocol_scheme" /> </intent-filter> </activity>

  7、设置登录按钮

    我这里是直接在项目中设置按钮登录

      js代码

onClickLogin(){
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "LoginFb", "()V");
}

 

            java代码

public static void LoginFb(){
        LoginManager.getInstance().logInWithReadPermissions(sCocos2dxActivity, Arrays.asList("public_profile"));
    }

  8、注册回调

    在AppActivity的onCreate方法中添加以下代码

sCocos2dxActivity = this;
        callbackManager = CallbackManager.Factory.create();
        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Toast.makeText(getApplicationContext(), "facebook登录成功" + loginResult.getAccessToken().getUserId(), Toast.LENGTH_SHORT).show();
                final String Fid = loginResult.getAccessToken().getUserId();
                Cocos2dxHelper.runOnGLThread(new Runnable() {
                    @Override
                    public void run() {
                        Cocos2dxJavascriptJavaBridge.evalString("window.FbLoginCallback("+Fid+");");
                    }
                });
            }

            @Override
            public void onCancel() {
                Toast.makeText(getApplicationContext(), "facebook登录取消", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onError(FacebookException error) {
                Toast.makeText(getApplicationContext(), "facebook登录错误", Toast.LENGTH_SHORT).show();
            }
        });

 

    最后,在 onActivityResult 方法中调用 callbackManager.onActivityResult,通过 callbackManager 将登录结果传递至 LoginManager

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        callbackManager.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
    }

最后在导出的项目中点击按钮看看效果

 

posted @ 2020-07-20 16:24  熙丞  阅读(4390)  评论(0编辑  收藏  举报