FaceBook登錄接入

官方文檔

Facebook登錄接入Android官方文檔

創(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ā)布秘鑰散列

首先辜梳,需要三個工具:

其次,利用命令行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配置的一樣
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盯滚,一起剝皮案震驚了整個濱河市踢械,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌魄藕,老刑警劉巖内列,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異背率,居然都是意外死亡德绿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門退渗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蕴纳,你說我怎么就攤上這事会油。” “怎么了古毛?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵翻翩,是天一觀的道長。 經(jīng)常有香客問我稻薇,道長嫂冻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任塞椎,我火速辦了婚禮桨仿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘案狠。我一直安慰自己服傍,他們只是感情好钱雷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吹零,像睡著了一般罩抗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上灿椅,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天套蒂,我揣著相機(jī)與錄音,去河邊找鬼茫蛹。 笑死操刀,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的麻惶。 我是一名探鬼主播馍刮,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼窃蹋!你這毒婦竟也來了卡啰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤警没,失蹤者是張志新(化名)和其女友劉穎匈辱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杀迹,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亡脸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了树酪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浅碾。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖续语,靈堂內(nèi)的尸體忽然破棺而出垂谢,到底是詐尸還是另有隱情,我是刑警寧澤疮茄,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布滥朱,位于F島的核電站,受9級特大地震影響力试,放射性物質(zhì)發(fā)生泄漏徙邻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一畸裳、第九天 我趴在偏房一處隱蔽的房頂上張望缰犁。 院中可真熱鬧,春花似錦、人聲如沸民鼓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丰嘉。三九已至夯到,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間饮亏,已是汗流浹背耍贾。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留路幸,地道東北人荐开。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像简肴,于是被迫代替她去往敵國和親晃听。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,098評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理砰识,服務(wù)發(fā)現(xiàn)能扒,斷路器,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 已經(jīng)想不起和拆書幫結(jié)緣的準(zhǔn)確時間了辫狼,我記得我是從互動吧里報名參加了拆書幫上饒三清山分舵的一次線下練級場的活動初斑。第一...
    錦莉閱讀 230評論 2 1
  • 內(nèi)心里自己還是個孩子,可是轉(zhuǎn)身看到身邊已經(jīng)站著自己的孩子膨处,甚至是孩子們见秤。不管愿不愿承認(rèn),八零后的我們大多數(shù)都已經(jīng)是...
    WillChang閱讀 200評論 0 0
  • 一九七四年六月十五號真椿,兩年半的高中學(xué)習(xí)生活結(jié)束了鹃答。畢業(yè)以后,我很少和同學(xué)們保持聯(lián)系突硝。 2017年的春天测摔,一個陽光燦...
    惜福_d9e6閱讀 702評論 0 2