我在做facebook的应用程序。我正在从我的应用程序用户获得离线访问权限。现在,我希望我可以使用相同的令牌,当用户第一次使用我的应用程序时,我会将这个令牌存储在我的db中,每当用户再次登录到我们的站点并希望通过我们的应用程序发布一些挂号时,我们将使用相同的令牌在墙上发布。
这是我的密码
protected void Page_Load(object sender, EventArgs e)
{
var auth = new CanvasAuthorizer { Permissions = new[] { "user_about_me", "publish_stream", "video_upload", "share_item", "photo_upload", "offline_access" } };
var fbWebContext = FacebookWebContext.Current;
if (fbWebContext.IsAuthorized())
{
try
{
var fb = new FacebookWebClient(fbWebContext);
var token = fb.AccessToken; \\ Im Getting Token This Way When its Generated From User After Getting Extended Permission
dynamic result = fb.Get("/me");
long id = fbWebContext.UserId;
}
catch (Exception ex)
{
if ("(OAuthException) Error validating access token: The session is invalid because the user logged out or because auth.expireSession was invoked." == ex.Message)
{
fbWebContext.DeleteAuthCookie();
Session.Clear();
}
}
}
}我使用var token = fb.AccessToken获得访问令牌,但当我使用它时,它说
您的令牌在Unix时间xxxxxxxxxx过期。
如果这是请求脱机访问的扩展权限后的访问令牌,请任何人告诉我,那么为什么要说“您的访问令牌过期了?”有人能帮忙吗?
发布于 2011-08-16 11:54:37
这里的主要问题是,即使您请求了offline_access权限,您也不能100%地确定令牌永远不会存在。
在许多情况下,访问令牌可能过期--即使使用offline_access --例如:用户更改密码、应用程序机密更改等。在这些情况下和其他情况下,您的应用程序必须能够检测无效的访问令牌并将用户传递到auth流中以获得新的令牌。
您可以测试您的访问令牌,并使用访问令牌和访问令牌lint工具( https://developers.facebook.com/tools/access_token和https://developers.facebook.com/tools/access_token/lint )对它们进行调试。
要再次检查,您已经成功地获得了一个有效的令牌,复制并粘贴您通过API获得的令牌到图形资源管理器工具中。https://developers.facebook.com/tools/explorer/?method=GET&path=me
https://stackoverflow.com/questions/5914252
复制相似问题