如何查看我的Facebook AccessToken?如何更新? (.NET桌面应用程序)

时间:2011-04-28 19:05:28

标签: facebook

我创建了一个Facebook .NET桌面应用程序。在第一次运行时,应用程序打开第二个窗口,其中Web浏览器指向我的应用程序的授权页面,并具有用户所需的权限。

如果用户授权我的应用,Facebook会将我重定向到静态login_success.html,并将AccessToken附加到我的第二个.NET应用程序窗口中呈现的浏览器的Url的Hash(#)部分。

我将AccessToken交给我的主应用程序窗口,并代表相应的用户向图表api发出请求。

那很好,到目前为止工作!

但是,我怎么能

  • 检查我存储的AccessToken是否仍然有效以及如何
  • 我可以更新过期的AccessToken而不会在第二个浏览器窗口中窃听用户(当然假设用户没有撤​​销我的应用程序的授权)以及如何
  • 我能识别出用户已撤销授权吗?

2 个答案:

答案 0 :(得分:2)

  • 检查我存储的AccessToken是否仍然有效?

尝试对图表使用令牌,如果它给你一个错误(像OAuthException或OAuthError之类的东西),它就无效,否则它仍然是。

  • 我是否可以续订过期的AccessToken而不会使用第二个浏览器窃听用户?

不,我知道。但是,AccessTokens(具有Offline Access权限)不会过期。差不多2年前,我收到了一个用于我的应用程序的AccessToken,它没有更改或过期,所以我认为你应该很好。如果您的应用程序密钥更改或用户更改密码(我很确定最后一个,但不是100%),它们可能会变得无效

  • 我能识别出用户已撤销授权吗?

是的,如果您使用未授权该功能的AccessToken查询Graph,它将为您提供OAuthException。收到图表数据后,只需检查例外情况,就大多数情况下,它会告诉您无法接收Facebook数据的原因。

答案 1 :(得分:1)

不幸的是,如果您的访问令牌过期,您必须让用户通过Facebook获取新的访问令牌。一个offline_access令牌不会因为时间而过期,就像joe_coolish所指出的那样,但如果用户更改了密码,它就会过期。因此,您的程序需要识别用户的访问令牌无效时,并通过oauth端点让用户“刷新”。

认识到用户的令牌无效与识别用户已撤销应用程序授权的过程相同。每当您使用无效的访问令牌发出图形请求时,Facebook都会向您发出OAuthException,表示您没有访问权限。