close
FB的第三方登入
最麻煩的地方就是要設定Key了
這邊需要先確保你已經註冊並做好基本的FB綁定
官網在這部分有介紹作法
1. 官網https://developers.facebook.com/docs/facebook-login/android
並且在一開始就選擇你的專案
2. 設定專案的名稱, 這邊就是你的package name
然後按下save
3. 接著要產生Key, 這邊需要安裝OpenSSL來產生
指令就按照官網的方式
ex:
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\rx\.android\debug.keystore" | "C:\OpenSSL-Win64\bin\openssl" sha1 -binary | "C:\OpenSSL-Win64\bin\openssl" base64
4. 接著將產生的key填上後存檔
5. 然後到strings.xml 內加入
<string name="fb_login_protocol_scheme"> 你的ID </string>
6. 接著在AndroidManifest.xml內加入FB的Activity
<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. 在你想要的Layout上加入登入鈕
<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" />
8. 然後在內部註冊登入
CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("TAG", "GOGO");
callbackManager = CallbackManager.Factory.create();
FacebookSdk.setIsDebugEnabled(true);
FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.d("TAG", "LoginResult = " + loginResult.toString());
}
@Override
public void onCancel() {
Log.d("TAG", "onCancel()");
}
@Override
public void onError(FacebookException exception) {
Log.d("TAG", exception.toString());
}
});
}
9. 最後在onActivityResult設定method就結束了
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
Log.d("TAG", "requestCode = " + requestCode);
}
文章標籤
全站熱搜