我是一名网络开发学生,我正在努力与Instagram API合作。我以前从未涉及过OAuth。
到目前为止,我可以从用户那里获取代码,授权我使用他们的Instagram凭据,但POST请求获取实际的令牌。我正在尝试使用Typhoeus进行服务器端API请求,但我挂断的是将curl命令转换为可用的rails控制器脚本。
Instagram API推荐以下curl命令:
curl \-F 'client_id=CLIENT-ID' \
-F 'client_secret=CLIENT-SECRET' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri=YOUR-REDIRECT-URI' \
-F 'code=CODE' \https://api.instagram.com/oauth/access_token
这是我对Typhoeus POST请求的尝试:
request = Typhoeus::Request.new(
"https://api.instagram.com/oauth/access_token",
method: :post,
:body => {:client_id => CLIENT_ID,
:client_secret => CLIENT_SECRET,
:grant_type => "authorization_code",
:redirect_uri => CALLBACK_URL,
:code => code}
)
@results = JSON.parse((request.run).body)
当我尝试记录@results时出现以下错误:
{"code"=>400, "error_type"=>"OAuthException", "error_message"=>"You must provide a client_id"}
我有API需要的所有信息,我只是不知道如何正确安排...是的,所有的常量都是定义的。任何帮助赞赏!
我建议使用instagram-ruby-gem向Instagram API发出请求。你会发现它比使用Typhoeus容易得多。
不知怎的,我解决了自己的问题。上面的Typhoeus脚本运行得很好,每个人都有很多JSON爱。
当@results一直没有回来时,我想我的rails服务器可能会遇到模糊的会话问题。
我希望我有一个更具体的答案,为什么这不能提前工作,但我会继续前进,因为我向前迈进,希望有一个更令人满意的结论。
我终于在powershell中遇到了同样的问题,我还将client_id和代码放在查询字符串中。然后它工作。我的意思是这样的:
“Qazxswpoi”