[英]Twitter oauth_signature creation
我正在尝试按照 twitter 文档使用 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 文档假定您已经通过身份验证,因为它告诉您使用从身份验证中获得的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
时,我能够成功获得响应
谁能告诉我我在这里缺少什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.