0

我已经尝试了教程http://developers.facebook.com/docs/mobile/android/build/#sdk并且我能够成功登录。此代码提供了一个登录对话框。但我想把它作为一个 Activity 。因为我还必须从这个活动中执行其他任务。就像在成功登录后新活动开始时一样,在以前的 facebook 状态下再次回到以前的(facebook)活动。请帮我。谢谢

4

1 回答 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 回答