日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

android应用集成facebook登录

發布時間:2024/1/4 综合教程 36 生活家
生活随笔 收集整理的這篇文章主要介紹了 android应用集成facebook登录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


    之前都是做國內的應用開發,沒有用過國外的三方登錄,比如谷歌登錄、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%.androiddebug.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"));
      }
    });

    還要注冊一個監聽:
    LoginManager.getInstance().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();
      }
    });

    這種方式的好處就是可以保留有自己的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,但是這個監聽用的時候要注意,因為它登錄和退出都會觸發這個方法,所以要做飛非空判斷,并且可以以此來記錄是否已登錄等行為。

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

    如要轉載,請注明出處,謝謝!

    歡迎關注我的簡書博客,地址是:

    http://www.jianshu.com/u/da06e00edefa


    歡迎大家關注我的微信公眾號,我會定期發布一些博客,分享一些知識點。
    

總結

以上是生活随笔為你收集整理的android应用集成facebook登录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。