Alexey Erzyamkin
Alexey Erzyamkin

Reputation: 103

Android Facebook SDK authorize methods shows dialog every time

I'm writing an Android application that should upload photos to Facebook.

Everything works just fine except one thing. When I called the Facebook.authorize() method for the first time the Facebook dialog was shown with requested permissions and 'Allow'/'Don't Allow' buttons. That was OK. But when I run my app for the secong time I've got the same dialog, but with message that my application allowed already and suggestion to press OK button.

Is there a way to avoid this second dialog? Should I skip the authorize method in some conditions?

I tried to call the Facebook.isSessionValid() method before authorize method, but this did not help.

Here is my simplified code:

    mFacebook = new Facebook(APPLICATION_ID);
    mFacebookAsync = new AsyncFacebookRunner(mFacebook);

    if (mFacebook.isSessionValid()) {
        uploadPictureFile();
    }
    else {
        mFacebook.authorize(this, new String[] {"publish_stream"}, new Facebook.DialogListener() {

            @Override
            public void onFacebookError(FacebookError e) {
                Toast.makeText(PhotoFeederFacebookSendActivity.this, "Facebook error: " + e.getLocalizedMessage(), Toast.LENGTH_LONG).show();
                finishWithResultCode(RESULT_CANCELED);
            }

            @Override
            public void onError(DialogError e) {
                Toast.makeText(PhotoFeederFacebookSendActivity.this, "Facebook dialog error: " + e.getLocalizedMessage(), Toast.LENGTH_LONG).show();
                finishWithResultCode(RESULT_CANCELED);
            }

            @Override
            public void onComplete(Bundle values) {
                uploadPictureFile();
            }

            @Override
            public void onCancel() {Toast.makeText(PhotoFeederFacebookSendActivity.this, "Facebook authorization cancelled.", Toast.LENGTH_LONG).show();
                finishWithResultCode(RESULT_CANCELED);
            }
        });
    }

And here is my onActivityResult method:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        mFacebook.authorizeCallback(requestCode, resultCode, data);
    }

Any help appreciated. Thanks.

Upvotes: 6

Views: 8894

Answers (2)

magic
magic

Reputation: 76

You need to call mFacebook.setAccessToken("your token") before mFacebook.isSessionValid() and you need to save the token to preference yourself

Upvotes: 6

EddieB
EddieB

Reputation: 5001

If you only intend to update status see my post here... Android Facebook Graph API to update status

Upvotes: 0

Related Questions