在Android上使用FacebookSDK
1.在git裡下載facebookSDK
2.導入工程,import進來以後會看到很多個project,基本上請勾選FacebookSDK引用項目
3.新建一個APP,運行以下代碼。記錄打印出來的KeyHash用於下面申請APPID
注:紅色字是你使用facebook的項目的packname,這個使用facebook的項目必須先安裝好
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"x.x.x", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:",
Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
4.進入developers.facebook.com申請APP
然後Create new app,Create完成以後,會看到下圖!
請看到下圖中的三個橘色框框,
第一個是App ID,請一定要記起來!
第二個是key hash,把你剛剛產生的hashkey貼上去吧!
第三個是Facebook Login(以前沒有),請把它enable吧!
5.在開發的APP中配置
首先先打開/res/values/strings.xml!
然後新增一個element,叫做app_id!
如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_id">438511916228708</string>
</resources>
接著打開AndroidManifest.xml,
新增一個permission!如下:
<uses-permission android:name="android.permission.INTERNET"/>
然後在新增一個activity,如下
<activity android:name="com.facebook.LoginActivity"/>
新增一個meta-data,如下
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>
完成上述三個步驟以後就可以來寫code了!
6.開始寫code
首先先在onActivityResult進行丟丟登入結果的動作,
如下:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode,resultCode, data);
}
要寫在onActivityResult的原因是因為,你要用Facebook login時,都會跳到另一個Activity(如上的LoginActivity)進行輸入email & pwd!
輸入完以後,才會回到我們自己的Activity!
接下來要寫呼叫Login的,
你可以直接寫在onCreate的地方,就是一開這個app就進行fb登入!
如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Session.openActiveSession(this, true, new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state,Exception exception) {
if (session.isOpened()) {
Log.e("kenyang",session.getAccessToken()); // get token
}
}
});
}
7.還有自己寫好的一個發布類,请修改APPID,里面可以发布http图文分享,和本地图片分享,是一个重载的方法
http://download.csdn.net/detail/chococlatetan/8067307
參考:
http://blog.kerash.tw/2014/07/android-facebook-sdk-%E9%96%8B%E7%99%BC%E9%80%9F%E8%A8%98/