gpt4 book ai didi

firebase - Twitter OAuth request_token : Error Code 32, 无法进行身份验证

转载 作者:行者123 更新时间:2023-12-04 15:39:17 32 4
gpt4 key购买 nike

我正在尝试在我的 Game Maker 应用程序中使用 Twitter 通过 OAuth 向 Firebase 验证用户(Game Maker 不支持 SDK)。

通过 REST HTTP POST 请求(按照 https://developer.twitter.com/en/docs/basics/authentication/api-reference/request_token)执行此操作,但响应为“错误 32,无法对您进行身份验证”。

我已经在 Firebase 和 Twitter 的开发者控制台上设置了我的应用程序,并将 API key / secret 值复制到了 Firebase 控制台。 Firebase 为我提供了一个 callback_url,我已将其列入 Twitter 应用程序的白名单。

我正在关注 3-legged OAuth 的 Twitter API 文档(这是第 1 步,POST request_token),并检查了无数其他资源。

在签名上,我已经用在线编码器仔细检查了我的 HMAC-SHA1 编码是否正确,确实如此。

这是我的 HTTP 请求:

网址:https://api.twitter.com/oauth/request_token
方法:POST
标题:

Host : api.twitter.com,
Content-Type : application/x-www-form-urlencoded,
Authorization :

Oauth oauth_callback="https%3A%2F%2Fbitblock-blast.firebaseapp.com%2F__%2Fauth%2Fhandler", oauth_consumer_key="kEH9VascQh5rGdq6khl0oCfnL", oauth_nonce="p0B7y4w0P334qa633JzF370z89LK0N60", oauth_signature="MTIwMjc1Nzc1MTczODQ1OTUxMzQyMzgxMzIxNzYxODQxMjQyMzkyNTEyMDI3MTI0MjM1", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1571857067", oauth_version="1.0"

body : ””

标题的签名是从这个字典生成的:
oauth_callback      : https://bitblock-blast.firebaseapp.com/__/auth/handler,
oauth_consumer_key : [TWITTER API KEY],
oauth_nonce : [NONCE],
oauth_signature_method : "HMAC-SHA1",
oauth_timestamp" : [TIMESTAMP],
oauth_version" : "1.0"

(所有值由各自的脚本填写)

这就是我创建最终签名字符串的方式:
var parameters = map_to_http_parameter_string(header); //Convert to "key=value, key=value" format
var signature_base = string_upper(method) + "&" + percent_encode(url) + "&" + percent_encode(parameters);
var signing_key = [TWITTER_API_SECRET] + "&";

var signature = base64_encode(string_hex_to_binary(hash_hmac(signature_base, signing_key)));

以下是签名创建的分步分解:
  • 连接的“参数”字符串:
    "oauth_callback=https%3A%2F%2Fbitblock-blast.firebaseapp.com%2F__%2Fauth%2Fhandler&oauth_consumer_key=[API_KEY]&oauth_nonce=5sR6w60Hz2Uvk10EdW5135O79NuV3_amp_10st_80st_80st_ometh1o50sto_version1umeth1od7auth7auth7auth7auth7auth7auth7auth7auth7auth7auth_callback=[API_KEY]&oauth_consumer_key=[API_KEY]&oauth_nonce=5sR6w60Hz2
    (如您所见,这些是有序的和百分比编码的)
  • 连接的“基本签名”字符串:
    “POST&HTTPS%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&oauth_callback%3Dhttps%253A%252F%252Fbitblock-blast.firebaseapp.com%252F __%252Fauth%252Fhandler%26oauth_consumer_key%3D [API_KEY]%26oauth_nonce%3D5sR6w60Hz2Uvk10EdW5135O79NuV3y7b%26oauth_signature_method% 3DHMAC-SHA1%26oauth_timestamp%3D1571857990%26oauth_version%3D1.0"
  • 签名 key “[TWITTER_API_SECRET]&”(访问密码留空)
  • 在(基本签名,签名 key )上运行 HMAC-SHA1,编码为 base64(十六进制到二进制部分是必需的,因为 Game Maker 中的 HMAC-SHA1 生成十六进制 ASCII 字符串)

  • 最后,我将该签名添加到 header 的 Authentication 值并发送我的 HTTP 请求。

    响应应该是 OAuth token ,而不是我不断收到错误 32,无法对您进行身份验证。

    我已经检查了一切,看看我做错了什么,但找不到。

    最佳答案

    好吧,我发现这是一个愚蠢的错字:我在授权 header 中写了“Oauth oauth_callback...”而不是“OAuth oauth_callback...”。

    关于firebase - Twitter OAuth request_token : Error Code 32, 无法进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58529698/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com