gpt4 book ai didi

Oauth 的 C# 问题

转载 作者:行者123 更新时间:2023-11-30 15:46:05 25 4
gpt4 key购买 nike

我正在尝试创建 oauth 签名。但我不知道我做错了什么,因为网站给出了未经授权的错误。我正在使用 oauth 版本 1.0。方法是 HMAC-SHA1,它是基于 google 的 oauth。我的基本字符串是正确的,因为它用示例输出检查了它。我的代码:

string oauthSig = "";
string baseString = HttpUtility.UrlEncode(httpMethod.ToUpper()) + "&" +
HttpUtility.UrlEncode(url) + "&" +
HttpUtility.UrlEncode("oauth_callback="+callback+"&"+
"oauth_consumer_key="+consumerKey+"&"+
"oauth_nonce="+nounce+"&"+
"oauth_signature_method="+sigMethod+"&"+
"oauth_timestamp=" + timestamp + "&" +
"oauth_version=" + version
);
HMACSHA1 myhmacsha1 = new HMACSHA1(Encoding.UTF8.GetBytes(HttpUtility.UrlEncode(consumeSecret)),true);
byte[] hashValue = myhmacsha1.ComputeHash(Encoding.UTF8.GetBytes(baseString));
oauthSig = Convert.ToBase64String(hashValue);

如果我做错了什么,请告诉我。

谢谢

最佳答案

签名的 key 应该是:

CONSUMER_SECRET + '&' + TOKEN_SECRET

并且由于您还没有 token secret ,因此您应该使用 CONSUMER_SECRET 和符号 (&) 作为签名的 key 。

编辑,进一步说明:

HMACSHA1 hmacsha1 = new HMACSHA1();
hmacsha1.Key = Encoding.ASCII.GetBytes(string.Format("{0}&{1}", UrlEncode(consumerSecret), string.IsNullOrEmpty(tokenSecret) ? "" : UrlEncode(tokenSecret)));

byte[] dataBuffer = System.Text.Encoding.ASCII.GetBytes(data);
byte[] hashBytes = hmacsha1.ComputeHash(dataBuffer);

return Convert.ToBase64String(hashBytes);

我没有测试代码,但我已经从 oauth.googlecode.com - OAuthBase.cs 获取了它.我强烈建议您检查一下,它应该可以满足您的所有需求。

关于Oauth 的 C# 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4561660/

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