Google OAuth от Windows Phone неверная подпись - PullRequest
2 голосов
/ 03 декабря 2010

Я провел последние пару ночей на этом, и это сводит меня с ума.Надеюсь, кто-нибудь сможет пролить свет на это.

Я пытаюсь написать приложение для Windows Phone 7 для подключения к Google.Подпрограмма OAuth действительно доставляет мне неприятности.

Я видел немало примеров в Twitter, но ничего особенного для Google.Код ниже - каждый раз, когда я делаю запрос, Google говорит «неверная подпись».Базовые URL совпадают, все кажется кошерным - но он отказывается это принять.

string baseReqUrl = "https://www.google.com/accounts/OAuthGetRequestToken";
string oauth_consumer_key = "CONSUMER_KEY";
string oauth_consumer_secret = "CONSUMER_SECRET";
string oauth_nonce = OAuthLibrary.OAuth.CreateNonce();
string oauth_signature_method = "HMAC-SHA1";
long oauth_timestamp = OAuthLibrary.OAuth.CreateTimestamp();
//string scope = "https%3A%2F%2Fwww.google.com%2Fanalytics%2Ffeeds%2F";
string scope = "https://www.google.com/analytics/feeds/";
string oauth_callback = "oob";

List<string> sig = new List<string>();
sig.Add(baseReqUrl);
sig.Add("oauth_callback=" + oauth_callback);
sig.Add("oauth_conusmer_key=" + oauth_consumer_key);
sig.Add("oauth_nonce=" + oauth_nonce);
sig.Add("oauth_signature_method=" + oauth_signature_method);
sig.Add("oauth_timestamp=" + oauth_timestamp.ToString());
sig.Add("scope=" + scope);

string baseReq = "GET";
int i = 0;
foreach (string s in sig)
{
     if (i == 1)
     {
          baseReq = baseReq + "?" + s;
     }
     else
     {
          baseReq = baseReq + "&" + s;
     }
     i++;
}

HMACSHA1 h = new HMACSHA1(Encoding.UTF8.GetBytes(oauth_consumer_secret));

OAuth.OAuthBase b = new OAuth.OAuthBase();
string normalizedUrl = string.Empty;
string normalizedRequestParameters = string.Empty;
string sigBase = b.GenerateSignatureBase(new Uri(baseReq.Substring(4)), oauth_consumer_key, null, null, "GET", oauth_timestamp.ToString(), oauth_nonce, "HMAC-SHA1", out normalizedUrl, out normalizedRequestParameters);
string signature = b.GenerateSignatureUsingHash(sigBase, h);
string reqUrl = normalizedUrl + "?" + normalizedRequestParameters + "&oauth_signature=" + signature;
GetUrl(reqUrl); //this line just makes the request
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...