gpt4 book ai didi

Twitter oauth 请求 token 响应代码 401

转载 作者:行者123 更新时间:2023-12-04 12:25:03 25 4
gpt4 key购买 nike

我正在使用 twitter oauth 登录。但是,当我执行 request_token 时,第一步,响应代码总是返回 401 Unauthorized

我已经搜索了一个星期很多,但我找不到解决方案,请帮助。

这是我的连接:

URL url = new URL("https://api.twitter.com/oauth/request_token");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestProperty("Host","api.twitter.com");
conn.setRequestProperty("Authorization", data);
conn.setRequestMethod("POST");
conn.connect();

对于我的数据:
String data = "OAuth oauth_nonce=\"" + oauth_nonce
+ "\", oauth_callback=\"" + oauth_callback
+ "\", oauth_signature_method=\"" + oauth_signature_method
+ "\", oauth_timestamp=\"" + oauth_timestamp
+ "\", oauth_consumer_key=\"" + oauth_consumer_key
+ "\", oauth_signature=\"" + oauth_signature
+ "\", oauth_version=\"" + oauth_version + "\"";

另外,我确定我的签名是对的,因为我使用了twitter示例的参数,我可以计算出与它的示例相同的结果,所以我认为我的方法是正确的。

这是我的计算:
String oauth_para = "oauth_callback=" + oauth_callback
+ "&oauth_consumer_key=" + oauth_consumer_key
+ "&oauth_nonce=" + oauth_nonce
+ "&oauth_signature_method=" + oauth_signature_method
+ "&oauth_timestamp=" + oauth_timestamp
+ "&oauth_version=" + oauth_version;

String signingRequests = "POST&" + requestToken + "&" + URLEncoder.encode(oauth_para, "UTF-8");

String key = oauth_consumer_secret + "&";
SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), "HmacSHA1");

Mac mac = null;
try {
mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);
}
catch(Exception e) {
System.err.println("Error: " + e);
}
byte[] rawHmac = mac.doFinal(signingRequests.getBytes());

String oauth_signature = Base64.encodeBytes(rawHmac);
oauth_signature = URLEncoder.encode(oauth_signature);

我知道 nonce 和时间戳应该是随机且唯一的。所以,我的方法是这样的:
StringBuffer buffer = new StringBuffer("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); 
StringBuffer sb = new StringBuffer();
Random r = new Random();
int range = buffer.length();
for (int i = 0; i < 43;i ++) {
sb.append(buffer.charAt(r.nextInt(range)));
}
long epoch = System.currentTimeMillis() / 1000;
String oauth_nonce = sb.toString();

有人可以帮助我吗?

P.S:我也删除了我的应用程序,然后创建了一个新的应用程序。结果也是一样的。此外,应用程序已经写入和读取。

最佳答案

嘿,,,我在 1 分钟前遇到了同样的问题,但我想通了。我的问题至少是在应用程序的配置中(在 Twitter 内部),我的应用程序类型是客户端,什么时候应该是浏览器!所以我改为浏览器,放一个回调 URL 并且工作正常!!

关于Twitter oauth 请求 token 响应代码 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3681865/

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