我试图让Facebook C#SDK与offline_access和控制台应用程序一起工作。控制台应用程序和扩展权限offline_access工作流程
从我明白,我必须:
- 询问权威性的offline_access - 这很容易。
- 获得由FB返回“代码”,当用户授权offline_access
- 使用ExchangeCodeForAccessToken每次
我无法弄清楚如何抓住在代码中得到有效的访问令牌( 2)虽然?
感谢
我试图让Facebook C#SDK与offline_access和控制台应用程序一起工作。控制台应用程序和扩展权限offline_access工作流程
从我明白,我必须:
我无法弄清楚如何抓住在代码中得到有效的访问令牌( 2)虽然?
感谢
获取“代码”和换取令牌代码是你,如果你在一个服务器端的工作流程做认证通常做。在你的情况下,它可能会有点鲱鱼。有更简单的方法直接获取访问令牌。
这将有助于有更多的内容(包括代码)展示你是如何得到offline_access(JavaScript的,服务器端OAuth,...?)
当你通过的JavaScript SDK,让offline_access这在我意见提供最佳的用户体验,您将获得访问令牌早在从Facebook回应:
FB.login(function (response) {
if (response.session) {
if (response.perms) {
var accesstoken = response.session.access_token;
// do something with the token...save it, use it, etc.
} else {
// re-prompt for permissions
}
}
}, { perms: 'offline_access' });
一旦你拥有了它在JavaScript,你可以将它填满到一个隐藏的表单字段,把它放在一个ajax帖子你的服务器,或其他。
请注意,根据我的经验,实际上您并不需要保存的用户访问令牌来为所有api方法执行脱机API调用。在某些情况下,您可以使用应用程序访问令牌,如果您拥有offline_access和其他必需的权限,则Facebook会让它飞行。他们在上周发布了一篇开发人员博客文章,声明您需要一个令牌来处理以前不需要的api调用,因此可能会发生变化。
另外请注意,这些标记可能会变坏。例如,如果用户更改其Facebook帐户密码,则会使所有访问令牌失效。因此,最好测试它们,捕获OAuth异常,并且有一种方法可以让用户注意重新提示权限并获取新的访问令牌。
在用户授予您“offline_access”权限后,Facebook将用“code”查询字符串参数将用户重定向到您的应用程序URL。你需要抓住这个“code”查询字符串参数。
然后,使用此“代码”值创建另一个WebRequest以获取访问令牌。使用下面的网址发出请求:
https://graph.facebook.com/oauth/access_token?client_id={0}&redirect_uri={1}&client_secret={2}&code={3}
提供WebResponse可以分析如下:
NameValueCollection qs = HttpUtility.ParseQueryString(response);
token = qs["access_token"];
您需要坚持在数据库中的令牌在控制台应用程序中使用。