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

本文关键字:Windows Phone NO SDK token 交换 代码 Facebook-access | 更新日期: 2023-09-27 17:57:40

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

然而,我一辈子都不能用我的授权码换取访问令牌。

我的Facebook应用程序在"设置"-->"高级"下打开了以下开关:

  • 本机应用程序还是桌面应用程序?[是]
  • 你的应用程序秘密嵌入了吗?[否]
  • 客户端OAuth登录?[是]
  • 嵌入式浏览器OAuth登录?[是]

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

我收到的错误是:

{"错误":{"消息":"验证码格式无效。","类型":"OAuthException","代码":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

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

Dah。。。别介意,我在将授权码.ToLower()交换为access_token之前设置了它。删除了它,现在就像一个符咒。。。

不过,为了记录在案,我可以在Facebook设置-->高级关闭的所有开关的情况下获得access_token