【发布时间】:2011-08-16 19:54:37
【问题描述】:
我正在开发 Facebook 应用程序。我从我的应用用户那里获得了离线访问权限。现在我希望我可以使用用户第一次使用我的应用程序时生成的相同令牌,并且我会将此令牌存储在我的数据库中,并且每当用户再次登录我们的网站并希望通过我们的应用程序发布一些墙帖时我们将使用相同的令牌在墙上发布。
这是我的代码
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 过期。
在请求离线访问的扩展权限后,任何人都可以告诉我这是否是访问令牌,那么为什么它说“您的访问令牌已过期?”。有人可以帮忙吗?
【问题讨论】:
-
Ramhound:我认为你做错了。基本上在 oAuth 2.0 中有不同类型的身份验证。带有可过期令牌和不可过期令牌。当用户授予任何 Facebook 应用程序的扩展权限时,Facebook 会授予不可过期的令牌。
-
您使用什么库来处理授权/许可请求?
-
我想您可以尝试自己进行 oauth 过程,只需构建一个 url 并加载它.. ?
-
如果您在 IE 上进行测试,您可能会遇到 iframe cookie 问题。请参阅adamyoung.net/IE-Blocking-iFrame-Cookies 了解如何解决 IE 中的 iframe cookie 问题。
标签: c# asp.net facebook facebook-c#-sdk facebook-authentication