0

Facebookアクセストークンを拡張しようとしています。以下は私が行ったことです。ただし、トークンを拡張することができませんでした。Facebookのaccesstokenデバッガーを確認すると、トークンが1時間で期限切れになることがわかります。

何か案は?

    private string appId = "my app id";
    private string appSecret = "my app secret";
    private string returnUrl = "http://localhost:1868/callback";
    private string _scope = "user_about_me,publish_stream,user_videos,user_photos";

    [Test]
    public void GetFacebookLoginUrl()
    {
        var fb = new FacebookClient();
        dynamic result = fb.GetLoginUrl(
            new
                {
                    client_id = appId,
                    client_secret = appSecret,
                    redirect_uri = returnUrl,
                    response_type = "code",
                    scope = _scope
                }
            );
    }

    [Test]
    public void exchangeCodeForAccessToken()
    {
        var fb = new FacebookClient();
        dynamic result = fb.Get("oauth/access_token", new
        {
            client_id = appId,
            client_secret = appSecret,
            redirect_uri = returnUrl,
            code = "got the code after user accepts the request"
        });
    }


    [Test]
    public void ExtendExpiryTimeOfAccessToken()
    {
        var fb = new FacebookClient();
        dynamic result = fb.Get("oauth/access_token", new
        {
            client_id = appId,
            client_secret = appSecret,
            grant_type = "fb_exchange_token",
            fb_exchange_token = "token from preview method"
        });
    }

解決

ユーザーのアカウントからアプリの認証を取り消すと、すべてが理にかなっています。注意すべき点の1つは、上記のコードは実際には「長寿命」のアクセストークンを取得します。これは60日間有効であり、延長することはできません。

Facebookのクライアント側認証を使用する場合は、「ExtendExpiryTimeOfAccessToken」サンプルを使用して認証を拡張できます。

4

1 に答える 1

2

オフライン アクセスが減価償却される数か月前に最初にアプリケーションの開発とサインインを開始した場合は、このバグの影響を受ける可能性があります。

https://developers.facebook.com/bugs/341793929223330

影響を受けている場合は、アプリケーションの認証を解除してから再試行する必要があります。これは新しいユーザーには影響しません。

于 2012-09-26T19:38:18.893 に答える