首先你需要一組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 FacebookCallbackLog.d("onSuccess",loginResult.getAccessToken().getToken().toString())取得需要之Token。() { @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); } }
成功取得Token |
之後就下篇,代續...
很清楚 感謝~
回覆刪除您好,請問keystore是從哪裡取得呢?
回覆刪除