• 集成Facebook SDK之Facebook登录


    前言

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


    准备工作

    1. 保证自己的网络已经翻墙,能够进入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);
        }

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

  • 相关阅读:
    OJ推荐【转】
    Eclipse插件推荐:UCDetector: Unnecessary Code Detector
    Android工程目录及其作用简介
    Source not found The JAR file …has no source attachment.
    Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
    Microsoft Visual C++ Runtime error解决方法
    Windows程序设计之Hello,Windows 98程序的声音调试记录
    没有谁是躺着成为谁的【转载】
    下一个7年,我是谁?【转载】
    UEditor编辑器使用教程 百度经验
  • 原文地址:https://www.cnblogs.com/zhen-prz/p/13345769.html
Copyright © 2020-2023  润新知