Facebook登錄

2021-02-14 nangongkuo

之前都是做國內的應用開發,沒有用過國外的三方登錄,比如谷歌登錄、facebok登錄,最近參與了一個海外的支付相關的項目,調研了一下谷歌登錄和facebook登錄,其實調研之後覺得也是很簡單的,尤其是facebook登錄,跟國內的三方登錄集成幾乎沒有什麼差別。

下面說說facebok登錄的集成流程吧:

首先 你需要在facebook開發者官網上面註冊一個開發者帳號(如果你有facebook帳號的話也是可以的),網址為:developers.facebook.com,下面就是官網的頁面:

在頁面的右上有一個我的應用,點擊在下拉菜單中創建自己的應用:

這點擊「添加新應用」,會彈出下面這個頁面,一個填寫應用名稱,一個填寫自己的郵箱,然後點擊「創建應用編號」完成創建應用的操作:

下面是創建應用之後進入的應用的後臺配置頁面,裡面包括應用的id:

選中左邊菜單欄的「添加產品」選項卡,在右邊的功能選擇裡面選擇登錄這個模塊,點擊設置:

然後選擇android:

選擇Android之後會進入到下面的頁面:

我們會看到流程總共分為10個步驟:

第一步:選擇自己的應用,在這裡我們的建的demo應用是logindemo:

第二步:官網給出的步驟是下載「facebook」應用,其實不用下載,他們有自己的網頁版登錄,這一步可以略過:

第三步:需要在project下面的build.gradle裡面的buildscript { repositories {}} 裡面加一個mavenCentral(),加完之後的效果是這樣的:

然後在app下面的build.gradle裡面的dependencies裡面加一句:compile 'com.facebook.android:facebook-login:[4,5)' ,然後構建項目,就會自動下載引入facebook的sdk;

第四步:編輯 Manifest 清單:

①:打開 /app/src/main/res/values/strings.xml 文件;

②:添加如下所示的代碼

③:<string name="facebook_app_id">你在facebook上面創建的應用id</string>

<string name="fb_login_protocol_scheme">你在facebook上面創建的應用id</string>

④:打開 /app/manifest/AndroidManifest.xml 文件,將 uses-permission 元素添加到清單文件中:

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

⑤:在 application 元素後添加以下 meta-data 元素、一個針對 Facebook 的 activity 元素以及一個針對 Chrome 自定義選項卡的 activity 元素和意向篩選條件。將 @string/appname 替換為您的 Facebook 應用的名稱:

<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>

第五步:將軟體包名稱與應用的默認類關聯:

軟體包名稱:填寫軟體的包名

默認活動類名稱:填寫默認活動類包名和類名

第六步:為應用提供開發和發布密鑰散列:

為確保您的應用與 Facebook 之間互動的真實性,您必須先向我們提供您的開發環境下的 Android 密鑰散列。如果您的應用已經發布,則還應該同時提供發布密鑰散列。

生成開發密鑰散列

每個 Android 開發環境都將會有一個唯一的開發密鑰散列。要生成開發密鑰散列,在 Mac 中,運行以下命令:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

在 Windows 中,運行以下命令:

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

此命令將針對您的開發環境生成一個包含 28 個字符的唯一密鑰散列。將其複製粘貼到下面的欄位中。對於參與應用開發的每個人的開發環境,您必須分別提供開發密鑰散列。

生成發布密鑰散列

Android 應用必須先使用發布密鑰進行電子籤名,然後才能上傳到商店中。要生成發布密鑰散列,請在 Mac 或 Windows 內運行以下命令,並替換您的發布密鑰別名和 keystore 路徑:

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64

這會生成一個包含 28 個字符的字符串,您應將其複製粘貼到下面的欄位中。另外,請參閱 Android 文檔,了解有關應用籤名的信息。

第七步:啟用單點登錄,選擇「是」,然後save:

配置結束--

至此,所有的配置項都已完成,下面就是涉及到代碼集成階段了,也就是facebook登錄在你的應用中的使用。

facebook提供了兩種使用方式,一種是直接使用它的UI,它提供了一個LoginButton的一個自定義view,樣式可以稍微修改,把它放到你的布局中就可以使用了,使用方式很簡單;第二種方式是直接自定義任何形式的按鈕添加監聽,在建廳裡面直接調代碼執行facebook登錄操作。

方式一:使用LoginButton:

在XML代碼中添加LoginButton這個view:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

<com.facebook.login.widget.LoginButton

android:id="@+id/login_button"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:layout_marginTop="30dp"

android:layout_marginBottom="30dp" />

</LinearLayout>

它的樣式是這樣的:

這是未登錄的樣式,已登錄的樣式只是文案變成了「Log out」字樣,點擊即可完成退出,這是在xml代碼的集成,下面是在java代碼中的集成方式:

public class MainActivity extends FragmentActivity {

CallbackManager callbackManager;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

callbackManager = CallbackManager.Factory.create();

LoginButton loginButton = (LoginButton) view.findViewById(R.id.usersettings_fragment_login_button);

loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {

@Override

public void onSuccess(LoginResult loginResult) {

Toast.makeText(getApplicationContext(), "facebook登錄成功", Toast.LENGTH_SHORT).show();

}

@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();

}

});

}

}

最後,調用 callbackManager.onActivityResult,通過 callbackManager 將登錄結果傳遞至 LoginManager。

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

callbackManager.onActivityResult(requestCode, resultCode, data);

}

方式二:使用自己的定義的界面:

在XML代碼中添加任意一個button:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:gravity="center"

android:orientation="vertical">

<Button

android:id="@+id/facebook_login"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="臉書登錄"/>

</LinearLayout>

在java代碼中添加按鈕的監聽並在監聽中提供提供登錄操作:

mFacebookLogin.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile"));

}

});

這種方式的好處就是可以保留有自己的UI風格,不產生UI設計上的衝突。

至此兩種登錄方式介紹完畢

其實介紹到這還沒有結束,因為我們一把情況下還要獲取facebook用戶的個人公共信息,還要對是否登錄進行判斷,所以,一些細節性的收尾的工作換要處理:

facebook提供的一個監聽器,用來監聽用戶個人信息發發生變化,這個監聽器叫ProfileTracker,我們可以這樣:

創建一個ProfileTracker對象:

    private ProfileTracker profileTracker;

profileTracker = new ProfileTracker() {

@Override

protected void onCurrentProfileChanged(

Profile oldProfile,

Profile currentProfile) {

// App code

if(currentProfile != null){

Toast.makeText(getApplicationContext(), "個人信息 = " + currentProfile.getFirstName(), Toast.LENGTH_SHORT).show();

}

}

};

在這裡個人信息分為oldProfile和currentProfile,但是這個監聽用的時候要注意,因為它登錄和退出都會觸發這個方法,所以要做飛非空判斷,並且可以以此來記錄是否已登錄等行為。

好了,就寫到這吧,希望這篇文章對大家有所幫助。

相關焦點

  • Facebook帳號一鍵登錄
    Facebook帳號一鍵登錄公司最近做的一個項目要求使用Facebook實現一鍵登錄的功能。
  • Facebook帶COOKIE谷歌瀏覽器登錄
    Facebook帶COOKIE帳號的登錄谷歌瀏覽器登錄,Facebook導入緩存COOKIE登陸。。。。
  • Facebook登錄最穩定的方法之: cookies 登錄
    FaceBook登錄的方法了。除了手機app登錄之外,電腦端的登錄有兩種:1種就是直接登錄帳號、密碼。
  • FaceBook帳號登錄的問題
    帳號正常登錄會是什麼樣?有頭像的,會是左邊這種樣式,沒有頭像的就會提示你上傳頭像。這都屬於正常的。如果是電腦端,那就更明顯了,直接就進入了facebook的界面。這個很好判斷。而且最好的處理方式,其實就是呆在這個界面,什麼都不要動。放置一兩天時間。如果帳戶會出問題,它就會出問題,不出問題,基本上後面也就不會出問題了。
  • FACEBOOK帳號登錄的種種不幸
    有很多人購買facebook帳號之後,只關心帳號密碼,其他都不關心。
  • 零技術門檻-使用海外伺服器登錄facebook
    我們講一個適合零基礎小白和所有用戶操作的,快速、穩定的登錄facebook,進行養號、營銷等等操作的方法。方法:購買一臺海外伺服器成本:100元左右/月答疑:為什麼購買海外伺服器?因為海外伺服器可以訪問facebook,自帶一個私人使用的固定IP,不會由於其他人亂搞而導致被封號,增加了facebook的安全性,更重要的是操作簡單,操作簡單,操作簡單!下面以購買阿里雲伺服器為例:我們選擇輕量應用伺服器(aliyun.com/product/swas?),為什麼選擇這個?因為便宜!
  • 不要用共享wifi去登錄facebook
    最近碰到好幾個用戶反饋的facebook登錄問題。裡面有一個細節值得大家了解一下。就是自己的本地網絡,這個其實也是有區別的。
  • 使用User-Agent和Cookie安全登錄Facebook帳號[安全買號必讀]
    | datr,其中facebook.com是cookie的域名,datr是cookie 的名稱,點擊這一項,從我們cookie代碼範例中找到 datr=_nFDXh1Pdkk3ddddd9c8wEN,將"_nFDXh1Pdkk3ddddd9c8wEN"替換到值的輸入框裡,點擊對號保存就可以了。
  • 通過一個網頁識別Facebook用戶當前登錄狀態
    這個服務端本身確實是有access-control-allow-origin消息控制頭的,但當URL連結中的用戶ID參數(在__user的URL中)與關聯帳戶的登錄行為不匹配時,服務端中就會包含一個」error「前綴,而當兩者行為匹配時,其中就不會包括任何前綴。URL中的用戶ID和關聯帳戶登錄行為匹配時,服務端響應為JSON內容。
  • 我的facebook帳號又異常了?
    玩社交媒體基本上繞不過facebook,但是,大家最近是不是發現,自己的facebook 帳號變得越來越脆弱了?
  • facebook直播教程,facebook怎麼開直播呢?
    facebook直播本來沒什麼,特別簡單。就是翻Qiang之後,登錄facebook就可以直播了。facebook直播入口就那麼幾個,用哪一個都一樣。電腦端和手機端都可以用的。那為什麼有些人不能直播呢?這個問題最後來解答。首先說電腦端吧。登錄你的facebook帳戶之後 ,在發時間線動態的地方就會有一個直播視頻。
  • Facebook養號 防封攻略來了!
    手機電腦多設備同時登錄建議:使用真實身份信息註冊。電腦&手機同時登錄著FACEBOOK,有時候兩者的IP位址並不相同;或出現共享帳號,幾個人使用一個帳號,不同電腦同時登錄或者很快的切換設備登錄;即同設備多帳戶,同帳戶多設備兩個方面。注意:並非手機電腦不能同時登錄,只是在帳號新手期的時候暫時不建議這麼做。 5.
  • │Facebook帳號註冊與登錄詳細教程
    一、 Facebook個人專頁註冊流程1、輸入網址www.Facebook.com (中文版:https://zh-cn.facebook.com/)進入官網,沒註冊的新用戶系統會自動跳轉到「註冊」界面:2、填寫相關信息,包括:姓名、郵箱、密碼、生日、性別等信息,姓名我們按照中文正常順序填寫即可。
  • 蝦皮shopee主帳號登錄不了,蝦皮shopee主帳號登錄名忘記怎麼辦
    蝦皮shopee主帳號登錄不了,優勢有哪些:平臺不會支持跨境或本土,物流的時效問題,相信很多老賣家已經遇到不少這樣的事,第二,消費者在退換貨方面會覺得簡單些,我做跨境快一年了,親身體驗到一款產品價格比本土低,比它做的早,但是後來被反超的情況)登錄問題,shopee的七大本土站點,僅臺灣本地是需要手機驗證的,但是如果本土號帶有COOKIE編碼,是不用驗證碼也能登錄
  • shopee蝦皮帳號中國登錄不了,shopee蝦皮主帳號怎麼登錄
    shopee蝦皮帳號中國登錄不了1.臺灣本土的優勢有哪些:平臺不會支持跨境或本土,主要還是消費者的傾向性(舉個例子:同樣一款衣服,跨境賣家和本土賣家都在賣,本土價格反而比跨境的還要貴出60臺幣,消費者寧願貴幾十臺幣也會在臺灣的本地賣家上買。原因有二。
  • facebook企業戶申請保姆級教程
    直接開始正文一:登錄帳號登錄facebook,需要「科學的上網環境」,推薦大家用adspower
  • 什麼是faceBook雙重驗證?
    如果設置雙重驗證,那麼每次您嘗試從陌生電腦或行動裝置訪問 Facebook 時,都必須輸入特殊的登錄驗證碼或確認登錄。您還可以在每次有人嘗試從陌生電腦登錄時接收提醒。雙重驗證是一種安全保護功能,可在密碼保護的基礎上,為您的 Facebook 帳戶提供額外安全保護。如果設置雙重驗證,那麼每次您嘗試從陌生電腦或行動裝置訪問 Facebook 時,都必須輸入特殊的登錄驗證碼或確認登錄。
  • 你的Facebook被封了?看看是因為這個嗎?
    facebook要求信用卡的Card Holder和你的facebook帳號名字要相吻合,比如你用張三這個名字開了facebook帳號,那麼你付款打廣告的信用卡主人也得叫張三。 如果是因為換ip 被封的策略,這裡有個建議,僅供大家參考 前往安全設置( > 設置 > 安全)點擊登錄許可部分勾選方框,並保存更改幾點注意事項:要開啟登錄許可,帳戶中需有一個手機號碼。可在開啟登錄許可時向帳戶中添加一個號碼。  如果使用的設備尚未命名,則開啟登錄許可時將要求您命名。
  • FaceBook登錄技巧?
    有些人登錄了成千上百Facebook.號碼之後,還是沒有發現Facebook登錄帳號的時候,到底有哪些需要注意的事項。因為針對大部分使用Facebook帳號的人來說,其實就是一個工作而已,而且90%以上的原因肯定會歸納為這個帳號不好。畢竟承認自己的錯誤是很難做到的,這是反人性的。而且批量買的帳號在沒有登錄之前都是一模一樣的,沒有任何的差別,你教我怎麼去判斷呢?
  • Facebook帳號被封,如何解封?
    如果識別難關過不了,就只能去申訴了,申訴地址:https://www.facebook.com/help/contact/260749603972907填寫以下內容:註冊時的郵箱或手機號、姓名、身份證