我创建了一个Facebook .NET桌面应用程序。在第一次运行时,应用程序打开第二个窗口,其中Web浏览器指向我的应用程序的授权页面,并具有用户所需的权限。
如果用户授权我的应用,Facebook会将我重定向到静态login_success.html,并将AccessToken附加到我的第二个.NET应用程序窗口中呈现的浏览器的Url的Hash(#)部分。
我将AccessToken交给我的主应用程序窗口,并代表相应的用户向图表api发出请求。
那很好,到目前为止工作!
但是,我怎么能
答案 0 :(得分:2)
尝试对图表使用令牌,如果它给你一个错误(像OAuthException或OAuthError之类的东西),它就无效,否则它仍然是。
不,我知道。但是,AccessTokens(具有Offline Access权限)不会过期。差不多2年前,我收到了一个用于我的应用程序的AccessToken,它没有更改或过期,所以我认为你应该很好。如果您的应用程序密钥更改或用户更改密码(我很确定最后一个,但不是100%),它们可能会变得无效
是的,如果您使用未授权该功能的AccessToken查询Graph,它将为您提供OAuthException。收到图表数据后,只需检查例外情况,就大多数情况下,它会告诉您无法接收Facebook数据的原因。
答案 1 :(得分:1)
不幸的是,如果您的访问令牌过期,您必须让用户通过Facebook获取新的访问令牌。一个offline_access令牌不会因为时间而过期,就像joe_coolish所指出的那样,但如果用户更改了密码,它就会过期。因此,您的程序需要识别用户的访问令牌无效时,并通过oauth端点让用户“刷新”。
认识到用户的令牌无效与识别用户已撤销应用程序授权的过程相同。每当您使用无效的访问令牌发出图形请求时,Facebook都会向您发出OAuthException,表示您没有访问权限。