【问题标题】:facebook Access Token 400 bad requestfacebook 访问令牌 400 错误请求
【发布时间】:2016-01-11 23:59:02
【问题描述】:

我正在使用以下代码来检索 facebook accessToken

string url = "https://graph.facebook.com/oauth/access_token?" +
                         "client_id={0}" +
                         "&redirect_uri={1}" +
                         "&client_secret={2}" +
                         "&code={3}";
            url = string.Format(url, clientId, redirectUri.EncodeUrl(), clientSecret, code);
            //Create a webrequest to perform the request against the Uri
            WebRequest request = WebRequest.Create(url);
            try
            {
                //read out the response as a utf-8 encoding and parse out the access_token
                using (WebResponse response = request.GetResponse())
                {
                    using (Stream stream = response.GetResponseStream())
                    {
                        //string urlRedirects = response.ResponseUri.ToString();
                        Encoding encode = Encoding.GetEncoding("utf-8");
                        if (stream != null)
                        {
                            StreamReader streamReader = new StreamReader(stream, encode);
                            string accessToken = streamReader.ReadToEnd().Replace("access_token=", "");
                            streamReader.Close();
                            response.Close();
                            return accessToken;
                        }
                    }
                }
            }
            catch
            {
                return null;
            }

但是我经常收到这个模棱两可的错误信息

{
"error": {
"message": "Error validating verification code.",
"type": "OAuthException",
"code": 100
}
}

我检查了代码 100“无效参数”对我来说根本没有什么意义。

有人遇到过类似的问题吗?

【问题讨论】:

标签: facebook authentication facebook-oauth


【解决方案1】:
  1. 检查您是否在 url 中添加了正确的代码 例如

    http://www.xyz.com/?code=AQC399oXame3UKmoAMYnqkZOEXPDNa8ZUFEY9sc6I4YNQnNT-ZgHzpMNnQVZrCUBZVqJRIB1QrXC5xW58_8MNIgQol_PaQvYssUM8OiKjSY5aoqGLBMuCeeHsSqP_mRTd1xiK0iretZcXwMm_27lFYrWFw345Mxod_lfJuB8zI13E8wJUQiArXW_ZlGLNcyxh20#_=_
    

代码必须是

    code = AQC399oXame3UKmoAMYnqkZOEXPDNa8ZUFEY9sc6I4YNQnNT-ZgHzpMNnQVZrCUBZVqJRIB1QrXC5xW58_8MNIgQol_PaQvYssUM8OiKjSY5aoqGLBMuCeeHsSqP_mRTd1xiK0iretZcXwMm_27lFYrWFw345Mxod_lfJuB8zI13E8wJUQiArXW_ZlGLNcyxh20

代码最后不应包含以下内容

    #_=_ 

如果上面没有解决问题


2. redirect_uri 必须以 /

结尾
redirect_uri=http://www.xyz.com/

下面给出了一些上面提到的错误

redirect_uri=http://www.xyz.com


3. 还要确保 Facebook 上的应用 使用 Facebook 登录的网站 设置为相同的地址 例如http://www.xyz.com/

【讨论】:

  • 哇,我遇到了同样的问题(没有斜杠)。很难相信你会得到一个错误响应 400 Bad Request 省略时。
  • 没有尾随斜杠没有影响我。
【解决方案2】:

您需要将用户发送到 Facebook 登录页面以获得有效的code。然后应使用该代码为用户获取access_token

关注Authentication Guide

【讨论】:

  • 我在之前的代码中已经这样做了。 “代码”部分正在工作。正如我所说,当我请求身份验证令牌时会发生 400 错误请求
  • 错误表明代码有问题,因此请确保它没有被修改或更改。这可能是问题的原因。
  • +1 从反对票中恢复。即使这没有解决问题,它仍然不值得一票。它可能会帮助其他人。
【解决方案3】:

当我的应用程序 ID 和密码错误(我搞砸了开发和生产 ID 和密码)时,我也收到了错误消息 400。

修复它们(还要注意正确的主机)为我修复了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-06
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多