0

チュートリアルhttp://developers.facebook.com/docs/mobile/android/build/#sdkを試しましたが、正常にログインできます。このコードは、ログインするためのダイアログを提供します。しかし、これをアクティビティとして作成したいと思います。このアクティビティから他のタスクも実行する必要があるためです。ログインに成功した後に新しいアクティビティが開始されたときのように、以前の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();
    }

}

もう1つのオプションは、SSOの使用を検討することです(サンプルコードでコメントアウトしています)。

于 2012-09-26T08:30:33.077 に答える