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」サンプルを使用して認証を拡張できます。