Как получить доступ к контактам Google с помощью OpenID в Ruby - PullRequest
6 голосов
/ 01 декабря 2010

Я использую devise для входа в систему с помощью omniauth, authid.Когда пользователь входит в систему, я получаю

user_info: 
name: Riccardo Tacconi
last_name: Tacconi
email: email@gmail.com
first_name: Riccardo
uid: https://www.google.com/accounts/o8/id?id=xxxxxxxxx
provider: google_apps

Я нашел плагин: http://stakeventures.com/articles/2009/10/06/portable-contacts-in-ruby для получения контактов Google.Мне нужно использовать только этот метод:

@client = PortableContacts::Client.new "http://www-opensocial.googleusercontent.com/api/people", @access_token

, но мне нужен токен.У меня есть только UID.У вас есть идея, как получить токен доступа?Нет никаких документов о доступе к Google.

1 Ответ

3 голосов
/ 14 декабря 2010

Ответ на этот вопрос довольно сложный.Парсер переносных контактов Pelle использует его драгоценный камень oauth.Возможно, вам удастся вручную создать объект токена (пара ключ / секрет) из того, что дает вам omniauth / authid, но, скорее всего, это будет довольно грязный код.

Официально поддерживаемыйКлиент OAuth для Ruby: Signet .Однако синтаксический анализатор Pelle был разработан только для использования с его реализацией OAuth, поэтому, опять же, история здесь примерно такая же.Возможно, вам удастся вырвать код синтаксического анализа из его клиента и выдать его за Signet, но, как и раньше, если вы пойдете по этому пути, вы получите свою работу за вас.

Возможно, самый простойсегодня нужно просто использовать камень oauth и принять дерево зависимостей, которое Pelle навязал вам.

Edit: Это немного позже, и камень google-api-client может предоставить вамс тем, что вам нужно на данный момент.Поддерживает OAuth 1 и 2 и предлагает доступ на основе обнаружения к определенным API Google во многих случаях.К сожалению, API Контактов в настоящее время отсутствует в списке 1019 *, но клиент по-прежнему способен отправлять запросы к API без использования обнаружения, хотя в этом случае он немного более ручен (в том смысле, что вам нужно передать его HTTP-запросам).который он будет разрешать, и вы в основном самостоятельно для анализа).

...