Facebook - access_token的交换代码(C#/ Windows Phone / NO SDK)

时间:2014-04-09 01:28:22

标签: c# facebook facebook-graph-api oauth facebook-oauth

我在Windows Phone上使用C#通过oauth 2.0对facebook进行身份验证。我只使用REST服务调用。根本不使用Facebook SDK。我目前能够在手机上启动浏览器,让用户登录并批准应用范围,并检索我的授权码。

但是,我不能为我的生活交换我的授权码以获取访问令牌。

我的Facebook应用在“设置”下打开了以下开关 - > '高级':

  • 原生或桌面应用? [是]
  • 您的App Secret是否已嵌入? [否]
  • 客户端OAuth登录? [是]
  • 嵌入式浏览器OAuth登录? [是]

我应该注意,我的模型对用户进行身份验证并在手机上检索所有授权代码,然后我将授权代码传递给安全服务,我将其交换为access_token。我遇到了问题,所以我暂时将此服务器调用移动到我的手机应用程序中进行故障排除,但我收到同样的错误。

我收到的错误是:

{“error”:{“message”:“无效的验证码格式。”,“类型”:“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最终包含上面报告的错误字符串,表明我的授权代码是坏的。

有什么想法吗?

亲切的问候,

goodbar

1 个答案:

答案 0 :(得分:0)

Dah ...没关系,我在交换access_token之前设置了授权码.ToLower()。删除它,现在就像一个魅力......

但是对于记录,我可以使用Facebook设置中的所有开关获取access_token - >高级关闭