繁体   English   中英

Twitter oauth_signature 创建

[英]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,但我不知道在尝试对其进行编码时应该是什么keyvalue 告诉您如何创建签名的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM