RequestToken の Google API を呼び出しており、OAuhtBase を使用して署名を生成しています。私のコードは次のようになります。
public Uri BaseURL
{
get { return new Uri("https://www.google.com/accounts/OAuthGetRequestToken"); }
set { }
}
public string ConsumerKey
{
get { return "anonymous"; }
}
public string Nonce
{
get { return oAuthBase.GenerateNonce(); }
}
public string SignatureMethod
{
get { return "HMAC-SHA1"; }
}
public string Signature { get
{
string url;
string requestParams;
return HttpUtility.UrlEncode(oAuthBase.GenerateSignature(BaseURL, ConsumerKey, ConsumerSecret, string.Empty, string.Empty,
"GET", Timestamp, Nonce, out url, out requestParams));
}
}
public string Timestamp
{
get { return oAuthBase.GenerateTimeStamp(); }
}
public string Scope
{
get { return "https://www.googleapis.com/auth/userinfo.profile"; }
}
public string Callback
{
get { return "www.contestfactory.com"; }
}
public string GenerateURL()
{
var returnURL = new StringBuilder(BaseURL.ToString());
returnURL.Append("?");
returnURL.Append("oauth_consumer_key=" + ConsumerKey);
returnURL.Append("&oauth_signature_method=" + SignatureMethod);
returnURL.Append("&oauth_signature=" + Signature);
returnURL.Append("&oauth_timestamp=" + Timestamp);
returnURL.Append("&oauth_nonce=" + Nonce);
returnURL.Append("&oauth_callback=" + Callback);
returnURL.Append("&scope=" + Scope);
return returnURL.ToString();
}
さて、私の JavaScript がこのコードによって生成された URL を参照しようとすると。ブラウザで次のエラーが返されます。
signature_invalid base_string:GET&https%3A%2F%2Fwww.google.com%2Faccounts%2FOAuthGetRequestToken&oauth_callback%3Dwww.contestfactory.com%26oauth_consumer_key%3Danonymous%26oauth_nonce%3D400857%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1334%D25%D25%D25%スコープ%252Fwww.googleapis.com%252Fauth%252Fuserinfo.profile
必要なすべてのパラメーターを渡しているため、署名のどの部分が間違っている可能性があるかはわかりません。それらはすべて基本的な文字列です。何か案が?