我正在开发一个Rails应用程序,该应用程序要求以全能方式登录到Instagram。这将是我第一次使用Instagram的OAuth终结点,目前尚不清楚它是否正常工作(并且项目经理也不清楚)。
我正在将cURL实现与以下内容一起使用(以后将重置它,但会收到“找不到匹配的代码”错误,这似乎是逻辑上的第一步。
curl \-F 'client_id=4658fa17d45244c88dd13c73949a57d7' \
-F 'client_secret=ae6cfe5d13544eada4dece2ec40ac5dc' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri= http://seek-style.herokuapp.com/arc/services/instagram' \
-F 'code=CODE' \https://api.instagram.com/oauth/access_token
有回应
{"code": 400, "error_type": "OAuthException", "error_message": "No matching code found."}
我做某件事明显错了吗?是否有完成此操作的完整示例?我看过https://github.com/ropiku/omniauth-instagram,但无法确定是否仍在工作。规格通过,但实际呼叫被模拟。
[每条评论,我添加了一个链接到仓库https://github.com/trestles/seek,该链接正用于部署到Heroku。应用程序中基本上没有任何内容,据我所知,上面的cURL应该有效(也没有作用),因此我什至没有真正测试过。也许我甚至误解了Instagram的API的工作方式。
所以,我对Instagram API进行了一些研究。
所有必填信息位于:http://instagram.com/developer/authentication/
首先,您需要从Instagram获取一次性代码。对于您的应用程序,这非常简单。
只需将[auth to instagram]的href
设置为:
"https://api.instagram.com/oauth/authorize/?client_id=4658fa17d45244c88dd13c73949a57d7&redirect_uri=http://seek-style.herokuapp.com/arc/services/instagram&response_type=code"
您将收到以CODE为参数的API重定向。
您可以在services_controller#instagram
中进行处理,也可以仅从应用程序日志中提取。
应该有类似
Processing by ServicesController#instagram as HTML
Parameters: {"code"=>"c25dcdcb96ed4eb9a508fede0cb94e87", "state"=>"e3d6dc22d6cd3cdebf6fb9e51a728a120a6d901cc382c4bf"}
然后您应该从API请求ACCESS_TOKEN使用cURL:
curl \-F 'client_id=YOUR_CLIENT_ID' \
-F 'client_secret=YOUR_CLIENT_SECRET' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri= http://seek-style.herokuapp.com/arc/services/instagram' \
-F 'code=CODE_FROM_ABOVE' \https://api.instagram.com/oauth/access_token
或在services_controller#instagram
中使用RestClient:
resp = RestClient.post 'https://api.instagram.com/oauth/access_token', {
client_id: 'YOUR_CLIENT_ID',
client_secret: 'YOUR_CLIENT_SECRET',
grant_type: 'authorization_code',
redirect_uri: 'http://seek-style.herokuapp.com/arc/services/instagram',
code: params[:code]
}
控制器中的cURL响应或resp.body
应包含以下内容:
{
"access_token":"1515660384.9f652d3.fcb1e712d41347069ad5c65ccfada994",
"user":{
"username":"petro.softserve",
"bio":"",
"website":"",
"profile_picture":"http:\/\/images.ak.instagram.com\/profiles\/anonymousUser.jpg",
"full_name":"",
"id":"1515660384"
}
}