当前位置: 首页 > 知识库问答 >
问题:

Twitter OAuthrequest_token:错误代码32,无法验证

游鸣
2023-03-14

我正在尝试在我的Game Maker应用程序(Game Maker不支持SDK)中通过OAuth和Twitter对Firebase的用户进行身份验证。

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

我已经在Firebase和Twitter的开发人员控制台上安装了我的应用程序,并将API密钥/机密值复制到Firebase控制台。Firebase给了我一个callback\u url,我已经在Twitter应用程序上将其列入了白名单。

我正在关注三条腿OAuth的Twitter API文档(这是步骤1,POST request\u token),并查看了无数其他资源。

在签名上,我已经与在线编码器再次检查了我的HMAC-SHA1编码是否正确,事实确实如此。

这是我的HTTP请求:

URL:https://api.twitter.com/oauth/request_token方法: POST Header:

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"

正文:“

标头的签名是从此字典生成的:

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)));

以下是签名创建的分步分解:

>

串联的“基本签名”字符串:“POST

签名密钥"[TWITTER_API_SECRET]

在(基本签名、签名密钥)上运行HMAC-SHA1,编码为base 64(十六进制到二进制部分是必要的,因为Game Maker中的HMAC-SHA1会生成十六进制ASCII字符串)

最后,我将该签名添加到标头的身份验证值中,并发送HTTP请求。

响应应该是OAuth令牌,而不是我一直得到错误32,无法验证您。

我检查了所有的东西,看看我做错了什么,但找不到。

共有1个答案

尤研
2023-03-14

好吧,我发现这是一个愚蠢的打字错误:我写了“Oauth Oauth\u回调…”而不是“OAuth OAuth\u回调…”在授权标头中。

 类似资料:
  • 我正在尝试向twitter REST api发出搜索请求。这是我的要求: GET /1.1/users/search.json?q=#PLLFinaleHTTP/1.1 Host:api.twitter.comUser-Agent: PostPirate v1.0接受:/Content-Type: Application/x-www-form-urlencoded Authoration: OAu

  • 问题内容: 非常奇怪的错误。我使用的是http://developers.facebook.com/docs/authentication/。所以我创建了对fb的请求并传递redirect_uri。我在本地主机上使用测试站点。所以如果我通过 redirect_uri = http://localhost/test_blog/index.php 它工作正常,但如果我通过 redirect_uri =

  • 问题内容: 我在Internet上搜索了此问题的解决方案,并检查了Stack Overflow问题,但是没有一种解决方案适合我的情况。 我想创建一个从表sira_no到metal_kod的外键。 该脚本返回: 我尝试将索引添加到被引用的表中: 我在两个表(字符集和排序规则)上都检查了METAL_KODU,但找不到该问题的解决方案。我该如何解决这个问题? 这是metal_kod表: 问题答案: 错误

  • 我当前正在获取和生成失败的错误。尝试卸载android Studio,卸载并重新安装java,但无效。谢谢你的建议。非常感谢。 失败:生成失败,出现异常。 > 出了什么问题:任务执行失败:app: greendao。 <区块报价> 在解析/xxx/android/app/src/main/java/com/eatsy/打印机/Printer.java时发现4个问题。第一个问题:Pb(324)无法解

  • 问题内容: 以下代码给出了编译器错误 有时出于测试目的,希望防止某个方法被调用,因此一种快速执行此方法(而不是在使用 该方法的位置处将其注释掉)的方法是立即从该方法返回,以便该方法不执行任何操作。然后,我总是做些什么来解决编译器错误,这是 我很好奇,为什么会出现编译器错误?它会以某种方式破坏Java字节码,是为了保护程序员还是其他? 同样(这对我来说更有趣),如果将Java编译为字节码可以进行任何

  • 我安装了intellij idea。虽然我已经设置了JAVA\u HOME环境变量,引用“C:\Program Files\JAVA\jdk1.8.0\u 45”,但当我尝试运行它时,我最终出现以下错误: Windows 7_64位