1

Facebook C#SDK v 6を使用し、アプリケーション設定で[オフラインアクセスの削除]を有効にしました。ログインしてアクセストークンを取得した後、長期間有効なトークン(60日)と交換しようとしています。両方のトークンの有効期限が切れているため、取得できません。 24時間以内にあります。

これが私のコードです

Facebookにログインする場合

private const string Scope = "publish_stream,manage_pages";
   FacebookClient _fb = new FacebookClient();
   var fbLoginUrl = _fb.GetLoginUrl(
                new
                {
                    client_id = AppId,
                    client_secret = Appsecret,
                    redirect_uri = RedirectUri,
                    response_type = "code",
                    scope = Scope,
                    state = state
                });

短期間のアクセストークンを取得するには

if (Request.QueryString["code"] != null)
            code = Request.QueryString["code"];
           var result = _fb.Post("oauth/access_token",
                                  new
                                  {
                                      client_id = AppId,
                                      client_secret = Appsecret,
                                      redirect_uri = RedirectUri,
                                      code = code,
                                      scope = Scope,
                                      response_type="token"
                                  });

長寿命のアクセストークンを取得するには

       var  result1 = _fb.Post("oauth/access_token",
                                  new
                                  {
                                      client_id = AppId,
                                      client_secret = Appsecret,
                                      grant_type = "fb_exchange_token",
                                      fb_exchange_token= Session["fb_access_token"] as string
                                  });
4

1 に答える 1

1

これで十分です。

var result = GetExtendedAccessToken("my_short_lived_old_token");
var extendedToken = result.access_token;

public dynamic GetExtendedAccessToken(string oldToken)
{
    dynamic result = new ExpandoObject();
    try
    {
        var api = new FacebookClient
        {
            AccessToken = oldToken,
            AppId = ClientID,
            AppSecret = ClientSecret
        };
        dynamic parameters = new ExpandoObject();
        parameters.grant_type = "fb_exchange_token";
        parameters.fb_exchange_token = oldToken;
        parameters.client_id = ClientID;
        parameters.client_secret = ClientSecret;
        result = api.Get("oauth/access_token", parameters);
    }
    catch (FacebookOAuthException err)
    {
        result.error = "Error";
        result.message = err.Message;
    }
    catch (Exception err)
    {
        result.error = "Error";
        result.message = err.Message;
    }
    return result;
}
于 2012-08-17T11:43:53.140 に答える