平台:android
開發環境:windows
1.下載facebook sdk,確定facebook sample可以在eclipse及手機上執行。
2.在eclipse上加入quick cocos2dx中的sample "Luajavabridge"專案。並確定可以在手機上執行。
3.申請facebook developer應用程式。Namespace跟App Domains不用填沒關係。
4.產生並填入Key Hashes:(以下範例為使用elipse debug用的key。
切換到keytool的資料夾
cd C:\Program Files\Java\jre7\bin
產生key,位置不同的請自已修改
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Administrator\.android\debug.keystore" | C:
\openssl-0.9.8h-1-bin\bin\openssl sha1 -binary | C:\openssl-0.9.8h-1-bin\bin\openssl base64
※如果你之後發生hashkey錯誤的問題,畫面上會顯示正確的key,把他copy下來填在facebook dev 應用程式的設定上就行了。
產生key時會要你輸入密碼,預設是android
5.在專案res/values/strings.xml中加入 <string name="app_id">facebook的app id</string>
6.在AndroidManifest.xml中</activity>底下加入
<activity android:name="com.facebook.LoginActivity"/>
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>
7.取得userid及accesstoken
public void getUserData() {
Session.openActiveSession(s_instance, true, new Session.StatusCallback() {
@Override
public void call(final Session session, SessionState state, Exception exception) {
if (session.isOpened()) {
Request request = Request.newMeRequest(session,
new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
// If the response is successful
if (session == Session.getActiveSession()) {
if (user != null) {
String facebookId = user.getId();
session.getAccessToken();
Log.e("kenyang", facebookId);
Log.e("kenyang", session.getAccessToken());
Cocos2dxLuaJavaBridge.callLuaFunctionWithString(luaCallbackFunction, facebookId+","+session.getAccessToken());
Cocos2dxLuaJavaBridge.releaseLuaFunction(luaCallbackFunction);
}
}
if (response.getError() != null) {
// Handle error
}
}
});
request.executeAsync();
}
else
{
facebookAuth();
}
}
});
}
public void facebookAuth() {
fb.authorize(s_instance, new DialogListener() {
@Override
public void onComplete(Bundle values) {
Log.e("kenyang", values.toString());
getUserData();
}
@Override
public void onFacebookError(FacebookError error) {}
@Override
public void onError(DialogError e) {}
@Override
public void onCancel() {}
});
}
沒有留言:
張貼留言