【发布时间】:2014-05-21 23:39:08
【问题描述】:
我在 Windows Phone 上使用 C# 通过 oauth 2.0 向 facebook 进行身份验证。我只使用 REST 服务调用。根本不使用 Facebook SDK。我目前能够在手机上启动浏览器,让用户登录并批准应用范围,并检索我的授权码。
但是,我终生无法将授权码换成访问令牌。
我的 Facebook 应用在“设置”-->“高级”下打开了以下开关:
- 本机或桌面应用程序? [是]
- 您的 App Secret 是否已嵌入? [否]
- 客户端 OAuth 登录? [是]
- 嵌入式浏览器 OAuth 登录? [是]
我应该注意,我的模型对用户进行身份验证并在手机上检索授权码,然后我将授权码传递给安全服务,在那里我将其交换为 access_token。虽然我遇到了问题,所以我暂时将此服务器调用移到我的手机应用程序中进行故障排除,但我得到了同样的错误。
我收到的错误是:
{"error":{"message":"验证码格式无效。","type":"OAuthException","code":100}}
我尝试了几种组合方式,包括使用 HTTPUtility.UrlEncode() 包装授权代码
这是我的代码示例(实际值已换出)。
string FacebookClientID = "123456789123456789";
string FacebookRedirectURI = "https://www.facebook.com/connect/login_success.html";
string FacebookClientSecret = "d156df15dfds1f561fds5f1ds6f1";
string FacebookUrl = "https://graph.facebook.com/oauth/access_token";
HttpRequestMessage tokenRequest = new HttpRequestMessage(HttpMethod.Get, new Uri(FacebookUrl + "?client_id=" + FacebookClientID + "&redirect_uri=" + HttpUtility.UrlEncode(FacebookRedirectURI) + "&client_secret=" + FacebookClientSecret + "&code=" + HttpUtility.UrlEncode(FacebookAuthorizationCode)));
HttpResponseMessage tokenResponse = await hc.SendAsync(tokenRequest);
var json = tokenResponse.Content.ReadAsStringAsync().Result;
json 最终包含上面报告的错误字符串,说明我的授权码是错误的。
有什么想法吗?
亲切的问候,
好棒
【问题讨论】:
-
Dah... 没关系,我正在设置授权码 .ToLower()。删除它,现在就像一个魅力......
-
为了记录,我可以通过 Facebook 设置中的所有开关获取 access_token --> 高级关闭
-
如果解决了,您应该将其作为答案发布,并接受它
-
会的,该网站让我等了 8 个小时才回答我自己的问题。
标签: c# facebook facebook-graph-api oauth facebook-oauth