Rails - гем инстаграм - проблемы с токеном доступа и песочницей - PullRequest
0 голосов
/ 15 октября 2018

Мне нужно выложить на веб-сайт полную ленту Instagram моего клиента.Я пробовал несколько способов получить доступ к Instagram и получить весь канал, но я получаю некоторые ошибки.

Используя гем "instagram" (самый простой и простой способ), я получил следующую ошибку при попытке получить токен доступа.

Instagram::BadRequest: POST https://api.instagram.com/oauth/access_token/: 400: OAuthException: Matching code was not found or was already used.

Я пытался следовать указаниям наДокументация instagram https://www.instagram.com/developer/authentication/ с помощью моего браузера, и я могу получить токен доступа, но я не могу выполнять http-вызовы вручную в ruby.

Мне нужно загрузить все данные и сохранить их в моей базе данных (как я всегда делал), поэтому мне нужно все в контроллере.

мой код очень прост:

accessToken = Instagram.get_access_token(Instagram.client_id, :redirect_uri => CALLBACK_URL)
client = Instagram.client(access_token: accessToken)
response = client.user_recent_media

#other code to cycle inside posts and put everything in db

Я обязательно включил один и тот же redirect_url в мое приложение регистрации инстаграммы и в мой код.

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

РЕШИТЬ!Я неправильно понял использование API.

Я получил свой токен доступа после этого https://elfsight.com/blog/2016/05/how-to-get-instagram-access-token/

, и я могу получить доступ к своим сообщениям, используя в моей модели:

access_token  = Instagram.access_token
client = Instagram.client(access_token: access_token)
response = client.user_recent_media

и в моем файле конфигурации:

Instagram.configure do |config|
config.client_id     = "CLIENT_ID"
config.client_secret = "CLIENT_SECRET"
config.access_token  = "ACCESS_TOKEN"
end

большое спасибо за вашу поддержку

0 голосов
/ 15 октября 2018

Как показано в примере приложения в репо драгоценного камня , вам сначала нужно будет вызвать authorize_url:

 Instagram.authorize_url(:redirect_uri => CALLBACK_URL)

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

 response = Instagram.get_access_token(params[:code], :redirect_uri => CALLBACK_URL)
 client = Instagram.client(:access_token => response.access_token)    
 # do stuff with the client
...