集成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);
    }

最后在導出的項目中點擊按鈕看看效果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM