官方文檔
創(chuàng)建應(yīng)用
首先去Facebook開發(fā)者平臺注冊一個開發(fā)者賬戶泄鹏,這里需要翻墻固耘,在后臺添加一個自己的應(yīng)用
SDK集成
SDK的集成方式有兩種
- Maven方式
- 在您的項(xiàng)目中,打開 your_app > Gradle Scripts > build.gradle (Project),確保下列存儲庫都添加到 buildscript { repositories {}} 中
jcenter()
- 在您的項(xiàng)目中,打開 your_app > Gradle Scripts > build.gradle (Module: app) 并將下列執(zhí)行語句添加到 dependencies{} 部分逼裆,以便依賴于最新版的 Facebook 登錄 SDK:
implementation 'com.facebook.android:facebook-login:[4,5)'
-
Jar導(dǎo)入方式
下載Facebook最新的SDK jar包放到項(xiàng)目的libs文件夾下橱乱。
SDK下載地址是:Facebook SDK下載地址
編輯資源和清單
- 打開 /app/res/values/strings.xml 文件
<string name="facebook_app_id">15477621189....</string>
<string name="fb_login_protocol_scheme">fb15477621189....</string>
- 打開 /app/manifest/AndroidManifest.xml 文件
- 添加權(quán)限
<uses-permission android:name="android.permission.INTERNET"/>
- 在 application 元素中添加以下 meta-data 元素以及相應(yīng)的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>
填入APP的包名
在Facebook控制后臺填入即可
為應(yīng)用提供開發(fā)和發(fā)布秘鑰散列
首先辜梳,需要三個工具:
- keytool : JDK中默認(rèn)已經(jīng)有了
- windows openssl函數(shù)庫
- keystore:debug.keystore 以及應(yīng)用正式上線的keystore
其次,利用命令行cmd去生成調(diào)試以及正式的keystore秘鑰散列, cmd渠道JDK的目錄下,輸入一下命令泳叠,注意調(diào)整自己的各種路徑作瞄,debug.keystore的密碼默認(rèn)是沒有的,直接回車就好
- 調(diào)試版秘鑰散列
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\USERNAME\.android\debug.keystore" | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" sha1 -binary | "PATH_TO_OPENSSL_LIBRARY\bin\openssl" base64
- 正式版秘鑰散列
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64
生成出來秘鑰散列的是28個字符的字符串危纫,類似于以下
QvoiWD1LQEfDIrvczaq31WCJZjX=
SDK的API使用
- SDK的初始化登錄回調(diào)宗挥,在onCreate()中調(diào)用
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.e(TAG, "登錄成功: " + loginResult.getAccessToken().getToken());
loginResult.getAccessToken().getApplicationId();
loginResult.getAccessToken().getUserId();
}
@Override
public void onCancel() {
Log.e(TAG, "登錄取消");
}
@Override
public void onError(FacebookException error) {
Log.e(TAG, "登錄錯誤");
}
});
- 在你需要調(diào)用登錄的地方調(diào)用登錄接口
LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile"));
- 在 onActivityResult 方法中調(diào)用 callbackManager.onActivityResult,通過 callbackManager 將登錄結(jié)果傳遞至 LoginManager
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
callbackManager.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
}
這樣一個簡單的Facebook登錄客戶端API已經(jīng)完成了种蝶,如果需要服務(wù)端校驗(yàn)契耿,各家的校驗(yàn)方式都不一樣,可以參考訪問口令
應(yīng)用測試
- 測試手機(jī):需要翻墻
- 需要有g(shù)oogle play服務(wù)螃征,可以到各大應(yīng)用商店下載:谷歌安裝器
- google play商店下載Facebook app
- 將代買debug安裝到手機(jī)運(yùn)行測試
注意事項(xiàng)
- 將自己的debug.keystore生成散列秘鑰配置到Facebook控制后臺搪桂,要不然debug出來的app安裝到手機(jī)會不可用
- 注意自己的申請參數(shù)正確配置到:/app/res/values/strings.xml中
- 如果在Facebook控制后臺配置了包名,請確保自己應(yīng)用的包名和Facebook配置的一樣