Получение токена доступа из ответа Facebook Open Graph в Ruby - PullRequest
0 голосов
/ 08 июня 2010

Я пытаюсь внедрить единый вход с помощью facebook в моем приложении ruby ​​sinatra. До сих пор я следовал этому уроку:

http://jaywiggins.com/2010/05/facebook-oauth-with-sinatra/

Я могу отправить запрос на подключение пользователя к моему приложению, но у меня возникают проблемы с "получением" токена доступа. Пользователь может без проблем подключиться, и я получаю ответ с параметром «code», который я должен использовать для обмена токеном доступа, но именно здесь я застрял.

Поэтому я отправляю URL со следующими параметрами:

https://graph.facebook.com/oauth/access_token/{client_id}&{client_secret}&{code}&{redirect_uri}

Слова в фигурных скобках выше, очевидно, заменяются значениями.

Я отправляю это, используя следующий код:

response = open(url)

Это, похоже, не возвращает ничего полезного в виде токена доступа (у него есть @base_uri, который является URL-адресом, который я отправил выше, и несколько других параметров, хотя ничего полезного в этом нет). Однако, если я возьму тот URL-адрес, который я отправил, и вставлю его в браузер, я получу обратно токен доступа.

Может кто-нибудь сказать мне, как я могу получить запрос от Facebook и вытащить токен доступа?

Спасибо.

1 Ответ

0 голосов
/ 13 июня 2010

Если вы используете open-uri, вы должны получить дескриптор файла с некоторыми расширениями.

Это означает, что вы можете получить тело ответа, прочитав его, как любой дескриптор файла.

body = response.read

Тогда вы, вероятно, захотите проанализировать json и вытащить токен доступа:

require 'json'
JSON.parse(body)['access_token']
...