Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Instagram access\u令牌返回BadRequest错误_Ruby_Sinatra_Instagram_Instagram Api - Fatal编程技术网

Ruby Instagram access\u令牌返回BadRequest错误

Ruby Instagram access\u令牌返回BadRequest错误,ruby,sinatra,instagram,instagram-api,Ruby,Sinatra,Instagram,Instagram Api,我正在使用Instagram gem,在调用Instagram.user\u recent\u media时,收到一个意外的错误请求 get '/api/photos' do client = Instagram.client(:access_token => session[:access_token]) puts 'access token: ' << session[:access_token].inspect id = params[:id]

我正在使用Instagram gem,在调用Instagram.user\u recent\u media时,收到一个意外的错误请求

get '/api/photos' do
    client = Instagram.client(:access_token => session[:access_token])
    puts 'access token: ' << session[:access_token].inspect
    id = params[:id]

    photos = Instagram.user_recent_media(id, {:max_id => params[:max_id]})
end
在我放置access_令牌的行中,它正在打印一个access令牌,以便它清楚地存在。当我卷曲请求时,我得到了相同的错误

{"meta":{"error_type":"APINotAllowedError","code":400,"error_message":"you cannot view this resource"}}

但当我将请求粘贴到Instagram API控制台时,我得到了预期的结果(用户照片数据的JSON)。这是一个我关注的用户。有一段时间,我的access_令牌似乎立即过期,并抛出了一个特定的“access token not valid”(访问令牌无效)错误,但该错误已经消失,因此我不确定还有什么可能导致此错误

您在Ruby代码中使用的
access\u令牌
客户端id
必须与您在测试Instagram API控制台时在web浏览器中使用的令牌不同。这是唯一的解释

您在问题中使用的ID(35099128)用于私人Instagram帐户。它在Instagram API控制台中工作的原因是您已经在使用Instagram帐户跟踪私人帐户

编辑

为了100%确保您的代码中有正确的
access\u令牌
,您可以尝试直接进行查询,而不使用额外的变量。使用以下格式(摘自):

将用户id和
access\u令牌
替换为您正在代码中打印的标识

编辑2

由于
access\u令牌
绝对有效,因此Ruby代码中形成的请求显然缺少
access\u令牌
。问题在于这一行:

photos = Instagram.user_recent_media(id, {:max_id => params[:max_id]})
不知道您的
访问\u令牌
,可能是因为您没有使用先前定义的
客户端
对象。尝试将其更改为以下值(或相应的值):


只是出于时兴,在api控制台中是否放置了
max\u id=
?是的,我尝试过使用
max\u id
和不使用
max\u id
,在api控制台中都可以。我在我的应用程序中使用它来不断循环浏览用户的媒体,因为您一次最多只能抓取20个项目。在API中,我在控制台中的身份验证与在我的应用程序中的身份验证相同,因此我应该根据我跟踪的私人用户拥有相同的权限…否?我不明白为什么我会有一个不同的访问令牌。另外,re:client_id,我正在从我的终端复制请求,因此它直接来自我的Ruby代码。@thisanem查看对我答案的编辑。我认为您的代码和API控制台之间一定有些不同。尽管如此,我认为Instagram不允许您进行任何API调用来查询私人用户的信息。将我登录的access\u令牌粘贴到请求中的效果与浏览器和curl中的预期一样。这意味着您在Ruby代码中形成的请求缺少
access\u令牌
。再次查看我的编辑。非常感谢!我将令牌添加到选项散列中(在此提交中找到:)
photos=Instagram.user_recent_media(id,{:access_token=>session[:access_token],:max_id=>params[:max_id]})
photos = Instagram.user_recent_media(id, {:max_id => params[:max_id]})
photos = client.user_recent_media(id, {:max_id => params[:max_id]})