无法扩展facebook访问令牌

时间:2012-09-26 18:15:19

标签: c# facebook facebook-c#-sdk

我正在尝试扩展我的facebook访问令牌,以下是我所做的。但是,我无法扩展令牌,当我检查facebook accessstoken调试器时,它仍然显示令牌在一小时内到期。

任何想法?

    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"
        });
    }

解决方案

从用户帐户取消授权应用后,一切都开始变得有意义了。 有一点需要注意, 上面的代码实际上获得了一个“长期存在”的访问令牌,该令牌有效期为60天,无法扩展。

如果使用Facebook client-side authentication,则可以使用“ExtendExpiryTimeOfAccessToken”样本扩展它。

1 个答案:

答案 0 :(得分:2)

如果您最初开始开发应用程序并在几个月前签署离线访问折旧之前,则可能会受到此错误的影响。

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

如果您受到影响,则需要取消对该应用程序的授权,然后再试一次,这不会影响新用户。