Google GData .Net OAuthUtil.GetAccessToken 400 Неправильный запрос - PullRequest
5 голосов
/ 28 февраля 2012

Я пытаюсь сгенерировать токен доступа 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

Ответы [ 2 ]

1 голос
/ 30 марта 2012

Это может быть совершенно не связано, но URL, который вы указали в своей области действия

https://docs.google.com/calendar/feeds/

возвращает ошибку 404

Я думаю, что вы должны использовать следующее:

http://www.google.com/calendar/feeds/default/

или, возможно, http://www.google.com/calendar/feeds/default/owncalendars/full

0 голосов
/ 10 апреля 2012

Использовать метку реального времени.Он чувствителен ко времени и языку.

...