Instagram :: BadRequest 400:'self'关键字需要经过身份验证的用户

时间:2014-08-12 09:17:51

标签: ruby-on-rails oauth instagram

我是Ruby on Rails的新手,并且一直在尝试使用Instagram API创建一个Web应用程序来学习。

我想要实现的是

  1. 使用Instagram API进行身份验证
  2. 验证后,返回用户的基本信息
  3. 我在Github上的Instagram gem中显示了示例代码。 以下是我到目前为止所编码的内容:

    配置/初始化/ instagram.rb

    require "instagram"
    
    Instagram.configure do |config|
      config.client_id = "Hidden"
      config.client_secret = "for"
      config.access_token = "security reason"
    end
    

    应用/控制器/ auth_controller.rb

    class AuthController < ApplicationController
      def index
      end
    
      def oauth
        # Redirect to Instagram's auth page
        redirect_to Instagram.authorize_url( redirect_uri: 'http://localhost:3000/result/index')
      end
    
      def callback
        response = Instagram.get_access_token(params[:code], redirect_uri: 'http://localhost:3000/result/index')
    
        # Save access_token in Cookie
        session[:access_token] = response.access_token
    
        # Save user name in Cookie
        session[:username] = Instagram.client( access_token: session[:access_token]).user.username
        session[:user_id] = Instagram.client( access_token: session[:access_token]).user.id
    
        # Redirect to photo list page
        redirect_to controller: "result", action: "index"
      end
    end
    

    应用/控制器/ result_controller.rb

    class ResultController < ApplicationController
      def index
       @client = Instagram.client(:access_token => session[:access_token])
       @recent = @client.user_recent_media
      end
    end
    

    当我访问localhost:3000 / auth / oauth时,会出现Instagram的授权请求页面。点击&#34;授权&#34;它使用参数&#34重定向到localhost:3000 / result / index;?code =&#34;加上一些随机字母并返回错误说明

      

    Instagram :: BadRequest in ResultController #index GET   https://api.instagram.com/v1/users/self/media/recent.json?client_id=&#34; XXXXXXXXXXXXXX&#34 ;:   400:&#39; self&#39;关键字需要经过身份验证的用户

    我已经坚持这个问题了几天...... 此外,我想显示用户的基本信息,例如用户的用户名,user_id,bio和profile pic。如何在视图和控制器中编码以显示此类信息?

    非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

看起来您还没有完成OAuth流程。

在初始化程序中保留access_token,此标记对于使用Instagram登录/授权您的应用程序的用户来说是唯一的。

redirect_uri应该是你的回调uri:

http://localhost:3000/auth/callback

这是临时代码与access_token的交换。它不应该是结果/索引。 redirect_uri还必须与Instagram Developer页面上为您的OAuth应用程序输入的内容相匹配。

http://instagram.com/developer/clients/manage/

其他一切似乎都是正确的。我建议访问Instagram Ruby Gem github页面,那里有一些很棒的信息。

https://github.com/Instagram/instagram-ruby-gem