首先你需要一組facebook_app_id,請到https://developers.facebook.com/quickstarts/?platform=android申請
- 建立APP的專案名稱
- 輸入Package Name及Default Activity Class Name
- 輸入development and release key hashes (下面有教學)
- 加入Logger到你的APP
- 取得facebook_app_id
- 然後去你創建的Settings裡,把Single Sign On打開
如何取得key hashes:
- 產生Facebook Key Hash 需要使用到OpenSSL這個工具,可以先到OpenSSL for Windows下載Binaries Zip這個版本
- 把openssl-0.9.8h-1-bin\bin\openssl.exe複製到你的keystore位置
- 打開cmd,並指定位置至keystore位置。
- 根據下列指令取得key
- 回到註冊步驟3填入
※沒有執行步驟1、2則會出現'openssl' 不是內部或外部命令、可執行的程式或批次檔。
YOUR_RELEASE_KEY_ALIAS = 你的key名稱
YOUR_RELEASE_KEY_PATH = 你的key名稱.副檔名
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64
接下來就是Coding的部分了。
Gradle:
匯入Facebook的SDK。
compile 'com.facebook.android:facebook-android-sdk:4.7.0'
AndroidManifest:
新增網路權限
<uses-permission android:name="android.permission.INTERNET" />
將此匯入至application之中,再到string.xml新增facebook_app_id。
<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:theme="@android:style/Theme.Translucent.NoTitleBar"
android:label="@string/app_name" />
Layout:
新增Facebook的LoginButton。
<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" />
MainActivity:
public class MainActivity extends AppCompatActivity {
CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
FacebookSdk.sdkInitialize(this.getApplicationContext());
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
callbackManager = CallbackManager.Factory.create();
LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.registerCallback(callbackManager, new FacebookCallback() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.d("onSuccess",loginResult.getAccessToken().getToken().toString());
}
@Override
public void onCancel() {
Log.d("onCancel","onCancel");
}
@Override
public void onError(FacebookException e) {
e.printStackTrace();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
@Override
protected void onResume() {
super.onResume();
AppEventsLogger.activateApp(this);
}
@Override
protected void onPause() {
super.onPause();
AppEventsLogger.deactivateApp(this);
}
}
Log.d("onSuccess",loginResult.getAccessToken().getToken().toString())取得需要之Token。
| 成功取得Token |
之後就下篇,代續...

很清楚 感謝~
回覆刪除您好,請問keystore是從哪裡取得呢?
回覆刪除