【问题标题】:Rails - gem instagram - issues on access token and sandboxRails - gem instagram - 访问令牌和沙箱问题
【发布时间】:2018-10-15 20:40:09
【问题描述】:

我需要在网站上发布我客户的完整 Instagram 供稿。我尝试了几种访问 instagram 并获取整个提要的方法,但我遇到了一些错误。

使用 gem“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/ 上的指示获取访问令牌,但我无法在 ruby​​ 中手动执行 http 调用。

我需要下载所有数据并将其保存在我的数据库中(就像我一直做的那样),所以我需要控制器中的所有内容。

我的代码很简单:

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

我肯定在我的 instragram 注册应用程序和我的代码中包含了相同的 redirect_url。

【问题讨论】:

  • 能否请您重组您的问题?我似乎无法理解您需要什么。

标签: ruby-on-rails instagram access-token


【解决方案1】:

the gem's repo中的示例应用程序所示,您需要先调用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

【讨论】:

  • 罗伯托鲍勃鲍迪,我明白了。您能否提供一个包含方法中代码的 pastebin,在其中使用 Instagram gem、routes.rb 文件以及配置 Instagram gem 的位置,以便我更好地了解问题出在哪里。请注意:在 Stack Overflow 上,最好使用更多信息来编辑您的问题,而不是在线程中添加新答案。 :)
  • 谢谢维克多,抱歉。现在没有真正的代码我必须在我的模型中创建一个方法一个方法才能创建一个每天调用一次的任务。第一步是获取访问令牌并连接到instagram:---1。 FROM MY MODEL:拨打Instagram.authorize_url(:redirect_uri => CALLBACK_URL)给出的地址---2。从该地址的响应中获取param[:code] ---3。把它放在这个 => Instagram.get_access_token(params[:code], :redirect_uri => CALLBACK_URL) ---4。使用 Instagram.client(:access_token => response.access_token) 访问客户端我在第 1 步!
【解决方案2】:

解决了! 我误解了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

非常感谢您的支持

【讨论】:

    【解决方案3】:

    您应该在处理omniauth.auth 哈希中的回调时获取令牌:request.env['omniauth.auth']['credentials']['token']

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      相关资源
      最近更新 更多