2015-01-08 3 views
2

Я пишу простую процедуру, которая автоматически делает сообщение в facebook . Из того, что я понимаю, мне нужно иметь «токен доступа пользователя» до . Я использую Koala (но философия аналогична для других библиотек ). Во всяком случае, я создаю новую учетную запись OAuth:Получение токена доступа пользователя в facebook с помощью Koala

@oauth = Koala::Facebook::OAuth.new(app_id, app_secret, callback_url) 

Инструкции коалы затем становятся несколько неясными. Следующие две строки:

@oauth.url_for_oauth_code # generate authenticating URL 
@oauth.get_access_token(code) # fetch the access token once you have the code 

Откуда возникает переменная «код»? Он не говорит в документации . Кроме того, получает ли метод get_access_token «токен приложения » или «user_access_token»? Имя метода нечеткое. Я попытался подойти к URL-адресу, который дал мне метод [url_for_oauth_code], , но он не дает мне никакого кода! Откуда возникает переменная «code»?

+0

Вы нашли ответ? – poramo

+0

Привет всем. Я очень новичок в использовании API. В '@oauth = Koala :: Facebook :: OAuth.new (app_id, app_secret, callback_url)' что должно быть значением ** callback_url **? Я хочу обновить токен существующего зарегистрированного пользователя. Заранее спасибо. – Vishal

ответ

3

На первой странице Koala она заявляет, что вам нужно пройти через процесс OAuth, описанного в http://developers.facebook.com/docs/authentication/ (это старая ссылка, но содержание в пределах действует)

В частности

@oauth.url_for_oauth_code 

https://github.com/arsduo/koala/blob/master/lib/koala/oauth.rb#L85 Создает URL-адрес, который необходимо направить пользователю на основе репо, это что-то вроде

https://www.facebook.com/dialog/oauth? 
    client_id={app-id}& 
    redirect_uri={redirect-uri}& 
    scope=email 

На основании документации https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/v2.2#login, когда response_type опущен, тип ответа по умолчанию - code. Таким образом, выше эквивалентно

https://www.facebook.com/dialog/oauth? 
    client_id={app-id}& 
    response_type=code& 
    redirect_uri={redirect-uri}& 
    scope=email 

Так на перенаправлять redirect-uri, этот URL будет добавляться с кодом парам, которые необходимо обрабатывать затем поставлять

@oauth.get_access_token(code) 

Маркер доступа маркер доступа пользователя ,

+0

Хорошо, я все еще смущен. Когда вы говорите «Создает URL-адрес, который вам нужен, чтобы направить пользователя на основе репо, это что-то вроде». Когда вы говорите «на основе репо», что вы имеете в виду «репо»? Является ли это коротким для «хранилища»? Как репозиторий github? Я видел, что перенаправленный URL-адрес имел длинную строку, которая, как я полагаю, является переменной [code]. Я получил эту ошибку: Koala :: Facebook :: OAuthTokenRequestError Exception: type: Ошибка проверки кода подтверждения. Убедитесь, что ваш redirect_uri идентичен тому, который вы использовали в диалоговом окне OAuth. –

+0

Возможно, я использую неправильный токен. Я просто хочу, чтобы программа автоматически делала запись в фиде facebook время от времени (автоматическое «объявление»). Лучше ли использовать «токен доступа к странице»? –

+0

@SteveQuezadas Я потратил время на просмотр репозитория github для koala, у которого есть источник, из которого видно, что делает каждая функция (url_for_oauth_code, get_access_token). Ваш redirect_uri настроен неправильно. Http://stackoverflow.com/questions/16345777/given-url-is-not-allowed-by-the-application-configuration перейдите в настройки вашего приложения и убедитесь, что они соответствуют. – phwd

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