2014-01-02 4 views
1

У меня есть существующее приложение Google Marketplace, которое при установке совершает множество вызовов, чтобы извлекать данные Google от имени пользователя и работает нормально. Он использует SDK Google Admin, в настоящее время в основном API каталога.API ресурсов календаря Google

Я хотел бы начать использовать API ресурсов Google Calendar, но у меня возникли проблемы с ним. Прямо сейчас, мое приложение в основном использует 2-legged OAuth1 (OAuth2 скоро, надеюсь). Я добавил область применения https://apps-apis.google.com/a/feeds/calendar/resource/ в свой манифест тестового приложения. Тем не менее, любой вызов для получения информации ('https://apps-apis.google.com/a/feeds/calendar/resource/2.0/') не работает с «Неизвестным заголовком авторизации». Другие вызовы, использующие один и тот же класс клиентов, отлично работают, включая API каталогов.

Является ли API ресурса календаря не поддерживающим 2-legged OAuth1 через рынок? Я пробовал одну и ту же область и URL через игровую площадку OAuth2, и она отлично работает. Я не смог найти старую OAuth1 Playground (списан?)

ответ

1

Решение по KRH от Revision 2:


Точный код рода трудно разделить, так как там между собой классы и так далее, но вот в основном то, что генерирует клиент, используя библиотеку клиента Ruby Signet.

oauth_args = { 
     :authorization_uri => "https://www.google.com/accounts/OAuthAuthorizeToken", 
     :token_credential_uri =>"https://www.google.com/accounts/OAuthGetAccessToken", 
     :client_credential_key => config.google_marketplace_consumer_key 
     :client_credential_secret => config.google_marketplace_consumer_secret 
    } 
    client = Signet::OAuth1::Client.new(oauth_args) 
    client.two_legged = true 
    client.requestor_id = owner.email 
    client.get(:uri => 'https://apps-apis.google.com/a/feeds/calendar/resource/2.0/<test domain>') 

Результат возвращается:

Signet::AuthorizationError: Authorization failed. Server message: 
<HTML> 
<HEAD> 
<TITLE>Unknown authorization header</TITLE> 
</HEAD> 
<BODY BGCOLOR="#FFFFFF" TEXT="#000000"> 
<H1>Unknown authorization header</H1> 
<H2>Error 401</H2> 
</BODY> 
</HTML> 

Обратите внимание, что я могу взять именно этот код одного поколения и вызова API каталогов, и получить результат.

0

Похоже, что ваши заголовки не содержат надлежащего разрешения. Вот то, что работает для меня, используя oauth2:

'Content-Type': 'application/atom+xml', 
    'Authorization': 'Bearer ' + accessToken, 
    'X-JavaScript-User-Agent': "Google APIs Explorer" 

где маркер доступа является переменной, хранящий маркер доступа админа с API, позволяющие прав, т.е. SuperAdmin

Смежные вопросы