【发布时间】:2012-08-09 18:28:16
【问题描述】:
我使用 Facebook C# SDK v 6 并在我的应用程序设置中启用了“删除离线访问” 登录并获取访问令牌后,我正在尝试兑换长寿命令牌(60天之一) 我无法得到它,因为两个令牌都在 24 小时内到期。
这是我的代码
用于登录 Facebook
private const string Scope = "publish_stream,manage_pages";
FacebookClient _fb = new FacebookClient();
var fbLoginUrl = _fb.GetLoginUrl(
new
{
client_id = AppId,
client_secret = Appsecret,
redirect_uri = RedirectUri,
response_type = "code",
scope = Scope,
state = state
});
获取短期访问令牌
if (Request.QueryString["code"] != null)
code = Request.QueryString["code"];
var result = _fb.Post("oauth/access_token",
new
{
client_id = AppId,
client_secret = Appsecret,
redirect_uri = RedirectUri,
code = code,
scope = Scope,
response_type="token"
});
获取长期访问令牌
var result1 = _fb.Post("oauth/access_token",
new
{
client_id = AppId,
client_secret = Appsecret,
grant_type = "fb_exchange_token",
fb_exchange_token= Session["fb_access_token"] as string
});
【问题讨论】:
-
我认为端点希望通过 HTTP GET 与之交谈,而您正在使用 POST ...
-
感谢您的回答。我尝试了 HTTP GET 仍然是相同的响应。如果我删除应用程序权限并重新添加,第一次在提示权限对话框后它会获得过期值(即长期令牌)。但如果我再次运行同一个应用程序,它不会获得过期值。
-
所以我猜可能是这个错误,developers.facebook.com/bugs/339375252810525 你有没有用调试工具检查过你的令牌,它们的实际生命周期是多少? developers.facebook.com/tools/debug
-
这是使用调试工具的响应,我很困惑,因为它说过期永远不会。应用 ID:应用 ID:测试用户 ID:: 发布:(22 小时前)过期:从不有效:真实来源:Web
标签: c# facebook facebook-c#-sdk