要在Android上使用Facebook的API,可以使用Facebook Android SDK,使用上其實不太困難,不過要設定一開始的環境還蠻搞剛的,所以稍微將步驟紀錄一下。
開始設定
下載最新版的Facebook Android SDK,根據你的IDE放到project裡面。
或是直接使用別人包好的aarcompile ‘fr.avianey:facebook-android-api:+@aar’
產生Key hash (修改紅字部份)
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
3. 到Facebook開發者網站,登入後點選右上角的照片,然後選擇Developer Settings。
切換到Sample App的頁面,填入你步驟2得到的Key Hash,可以同時填入多個keyhash,然後按Save。
建立一個Facebook App
前往這裡,還沒註冊過開發者的話要先點Register Now,完成註冊動作。
點選最上面的Apps > Create a New App,完成App註冊的動作。
完成後畫面上會顯示App ID跟App Secret
點選左方的Settings,然後點選右方下面的 +Add Platform,選Android。
- 填入你的Android app的packaga name
- 填入你的Activity class name,非必要
- 步驟2產生的的Key Hash
- 打開Single Sign On
Android App的設定
在你的Android App的res/string.xml,加上
<string name="app_id">你的App ID(步驟5)</string>
然後在AndroidManifest.xml 加上 use-permission跟metadata
<uses-permission android:name="android.permission.INTERNET"/> <application ...> ...略... <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/> </application>
新增LoginActivity在你的AndroidManifest.xml
<activity android:name="com.facebook.LoginActivity"/>
測試Facebook登入
- 把下面這段code放到你的MainActivity onCreate的最後面。
// start Facebook Login Session.openActiveSession(this, true, new Session.StatusCallback() { // callback when session changes state @Override public void call(Session session, SessionState state, Exception exception) { if (session.isOpened()) { // make request to the /me API Request.newMeRequest(session, new Request.GraphUserCallback() { // callback after Graph API response with user object @Override public void onCompleted(GraphUser user, Response response) { if (user != null) { Toast.makeText(getApplicationContext(), "Hello " + user.getName() + "!", Toast.LENGTH_LONG).show(); } } }).executeAsync(); } } });
- 加上onActivityResult
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); }
如果可以看到Facebook登入權限的要求,然後登入看到Toast,那就是成功了。
沒有留言:
張貼留言