问题描述
我正在尝试关注 Twitter documentation 以使用 OAuth 1.0 将用户登录到 Twitter。
我遇到的问题是尝试创建 oauth_signature
,我不明白这里需要做什么
这就是我所拥有的
我按字母顺序生成参数
val consumerKey = "oauth_consumer_key=\"${apiKey}\""
val callback = "oauth_callback=\"${callbackUrl}\""
val method = "oauth_signature_method=\"HMAC-SHA1\""
val version = "oauth_version=\"1.0\""
val timestamp = "oauth_timestamp=\"${epochSeconds()}\""
val allowedChars = ('A'..'Z') + ('a'..'z') + (0..9)
val s = (1..32).map { allowedChars.random() }
.joinToString("")
val nonce = "oauth_nonce=\"$s\","
signatureBuilder.append("POST")
signatureBuilder.append("&")
signatureBuilder.append(urlEncodeString("https://api.twitter.com/oauth/request_token"))
signatureBuilder.append("&")
signatureBuilder.append(urlEncodeString(callback))
signatureBuilder.append(urlEncodeString("&"))
signatureBuilder.append(urlEncodeString(consumerKey))
signatureBuilder.append(urlEncodeString("&"))
signatureBuilder.append(urlEncodeString(nonce))
signatureBuilder.append(urlEncodeString("&"))
signatureBuilder.append(urlEncodeString(method))
signatureBuilder.append(urlEncodeString("&"))
signatureBuilder.append(urlEncodeString(timestamp))
signatureBuilder.append(urlEncodeString("&"))
signatureBuilder.append(urlEncodeString(version))
现在我必须将该字符串编码为 HMAC-SHA1,但我不知道在尝试对其进行编码时 key
和 value
应该是什么。 twitter documentation 会告诉您如何创建签名,它假定您已经通过身份验证,因为它告诉您使用通过身份验证获得的 oauth_token_secret
。
这是我用来编码的
fun generateHmacSha1Signature(key: String,value: String): String{
val type = "HmacSHA1"
val spec = SecretKeySpec(key.toByteArray(),type)
val mac = Mac.getInstance(type)
mac.init(spec)
val bytes = mac.doFinal(value.toByteArray())
return bytesToHex(bytes)
}
我在尝试使用 Postman 时能够成功获得响应,但 postman 以某种方式生成了 oauth_signature
谁能告诉我我在这里遗漏了什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)