Twitter でサインインするには、「署名」を提供する必要があるようです。これで、access_token と access_token_secret を取得できます。
しかし、署名を作成するということは、(署名キーとして使用して) access_token_secret を提供する必要があることを意味します。
元気?The remote server returned an error: (401) Unauthorized.
アプリケーション インターフェイスによって生成された access_token_secret を使用しても、常に を取得します。
他の方法で署名キーを作成する必要がありますか? これは、C# .NET での実際のコードです。
var requestedURL = "https://api.twitter.com/oauth/request_token";
var authorizationParameters = new List<KeyValuePair<string, string>>() {
new KeyValuePair<string, string>("oauth_callback",SocialEngine.twitter_aggrega_redirect_uri),
new KeyValuePair<string, string>("oauth_consumer_key",oauth_consumer_key),
new KeyValuePair<string, string>("oauth_nonce",oauth_nonce),
new KeyValuePair<string, string>("oauth_signature_method",oauth_signature_method),
new KeyValuePair<string, string>("oauth_timestamp",oauth_timestamp),
new KeyValuePair<string, string>("oauth_version",oauth_version)
};
var allParameters = authorizationParameters.OrderBy(tmp => tmp.Key);
var baseString = string.Join("&", allParameters.Select(p => string.Format("{0}={1}", p.Key, Uri.EscapeDataString(p.Value))));
baseString = string.Concat("POST&", Uri.EscapeDataString(requestedURL), "&", Uri.EscapeDataString(baseString));
var compositeKey = string.Concat(Uri.EscapeDataString(oauth_consumer_secret), "&", Uri.EscapeDataString(oauth_access_token_secret));
using (System.Security.Cryptography.HMACSHA1 hasher = new System.Security.Cryptography.HMACSHA1(System.Text.ASCIIEncoding.ASCII.GetBytes(compositeKey)))
{
oauth_signature = Convert.ToBase64String(hasher.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(baseString)));
}
oauth_header += "OAuth ";
oauth_header += "oauth_callback=" + "\"" + Uri.EscapeDataString(SocialEngine.twitter_aggrega_redirect_uri) + "\",";
oauth_header += "oauth_consumer_key=" + "\"" + Uri.EscapeDataString(oauth_consumer_key) + "\",";
oauth_header += "oauth_nonce=" + "\"" + Uri.EscapeDataString(oauth_nonce) + "\",";
oauth_header += "oauth_signature=" + "\"" + Uri.EscapeDataString(oauth_signature) + "\",";
oauth_header += "oauth_signature_method=" + "\"" + Uri.EscapeDataString(oauth_signature_method) + "\",";
oauth_header += "oauth_timestamp=" + "\"" + Uri.EscapeDataString(oauth_timestamp) + "\",";
oauth_header += "oauth_version=" + "\"" + Uri.EscapeDataString(oauth_version) + "\"";
HttpWebRequest request = WebRequest.Create(requestedURL) as HttpWebRequest;
request.Headers.Add("Authorization", oauth_header);
request.Method = "POST";