我已经尝试了教程http://developers.facebook.com/docs/mobile/android/build/#sdk并且我能够成功登录。此代码提供了一个登录对话框。但我想把它作为一个 Activity 。因为我还必须从这个活动中执行其他任务。就像在成功登录后新活动开始时一样,在以前的 facebook 状态下再次回到以前的(facebook)活动。请帮我。谢谢
问问题
256 次
1 回答
0
该对话框仅为用户登录 Facebook 而创建。一旦他们这样做了,它将返回到原始活动。这是你要求的对吗?
假设您想向 Facebook 发布消息。
try {
Log.d(TAG, "postToFaceBook()");
if (facebook == null) {
facebook = new Facebook(API);
String access_token = prefs.getFBAccesTocken();
long expires = prefs.getFBExpiry();
if (access_token != null) {
facebook.setAccessToken(access_token);
}
if (expires != 0) {
facebook.setAccessExpires(expires);
}
}
if (facebook.isSessionValid()) {
Log.d(TAG, "Session is valid");
facebook.extendAccessTokenIfNeeded(this, null);
postToFacebook();
} else {
Log.d(TAG, "not valid");
// Using SSO OAuth
// facebook.authorize(this, new String[] { "publish_stream"
// },new LoginDialogListener());
// Not using SSO
facebook.authorize(this, new String[] { "publish_stream" },
Facebook.FORCE_DIALOG_AUTH, new LoginDialogListener());
}
} catch (NullPointerException e) {
Log.e(TAG, "An error occurd trying to open facebook app");
如果用户过去曾登录过 facebook 并且有一个有效的会话,它会简单地发布到 Facebook,如果没有一个有效的会话,它将打开对话框并尝试登录。
LoginDialogListener() 响应这个响应。
public class LoginDialogListener extends BaseDialogListener {
@Override
public void onComplete(Bundle values) {
Log.d(TAG, "Login response recieved");
prefs.saveToken(facebook.getAccessToken());
prefs.saveExpiry(facebook.getAccessExpires());
facebook.extendAccessTokenIfNeeded(MyActivity.this, null);
Log.d(TAG, "Logged in ");
postToFacebook();
}
}
另一种选择是查看使用 SSO(我已在示例代码中注释掉)。
于 2012-09-26T08:30:33.077 回答