Я пытаюсь сгенерировать токен доступа OAuth через клиентскую библиотеку GData Google .Net.Я использовал инструкции из http://code.google.com/apis/gdata/docs/auth/oauth.html в качестве руководства, и все работало до тех пор, пока не попытаюсь вызвать OAuthUtil.GetAccessToken( parameters )
, после чего я получаю веб-исключение "(400) Bad Request".
К сожалению, мне ничего не говорится о , почему это плохой запрос.Итак, я немного озадачен этим.Единственная идея, которая у меня есть, заключается в том, что, поскольку я использую localhost
URL-адрес, он не работает (хотя я зарегистрировал URL-адрес в консоли Google API и, похоже, это нормально).
Любые идеи, что я делаю здесь неправильно и что я должен делать, чтобы сделать это правильно?
Объект OAuthParameters
построен следующим образом ( конфиденциальные данные подвергаются цензуре, надеюсь, что не затруднит ответить ):
BaseProperties:
oauth_consumer_key: <CLIENT_KEY>,
oauth_nonce: <NONCE>
oauth_signature_method: HMAC-SHA1
oauth_timestamp: 1330440325
oauth_token: <TOKEN>
oauth_verifier: <VERIFIER>
Callback: "http://localhost:57381/subscription_auth.aspx?c=google.calendar"
ConsumerKey: <CLIENT_KEY>
ConsumerSecret: <CLIENT_SECRET>
ExtraProperties
oauth_consumer_secret: <CLIENT_SECRET>
scope: https://docs.google.com/calendar/feeds/
oauth_callback: http://localhost:57381/subscription_auth.aspx?c=google.calendar
Nonce: <NONCE>
Scope: "https://docs.google.com/calendar/feeds/"
Signature: NULL
SignatureMethod: "HMAC-SHA1"
Timestamp: "1330440325"
Token: <TOKEN>
TokenSecret: NULL -- No Token Secret was returned from the callback.
Verifier: <VERIFIER>
Это переводитв заголовки для веб-ответа, которые выглядят следующим образом:
Authorization: OAuth oauth_version="1.0",
oauth_nonce=<NONCE>,
oauth_timestamp="1330441324",
oauth_consumer_key=<CLIENT_KEY>,
oauth_verifier=<VERIFIER>,
oauth_token=<TOKEN>,
oauth_signature_method="HMAC-SHA1",
oauth_signature=<SIGNATURE>
(добавлены разрывы строк для удобства чтения)
ПРИМЕЧАНИЕ. Приведенные выше отредактированные значения кодируются правильно, где это необходимопо коду GData.
И URI запроса: https://www.google.com/accounts/OAuthGetAccessToken
Ошибка происходит в строке 186 в соответствии с классом, расположенным здесь: http://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/src/core/oauthutil.cs?r=1123