沙盒中的 OAuthPermissionsException Instagram API

Posted

技术标签:

【中文标题】沙盒中的 OAuthPermissionsException Instagram API【英文标题】:OAuthPermissionsException Instagram API in Sandbox 【发布时间】:2016-02-25 02:44:43 【问题描述】:

我正在尝试使用 Instagram API 访问与标签(我们称之为“X”)相关的数据。我尝试从 Python 和浏览器直接运行它,得到了同样的错误:

u'meta': u'code': 400, u'error_type':u'OAuthPermissionsException',
u'error_message': u'This request requires scope=public_content, but this
access token is not authorized with this scope. The user must re-authorize
your application with scope=public_content to be granted this permissions.'

这是我编写的简单 Python 代码,以便首先使其工作:

import requests

access_token = 'zzzzzzzzzzzzz'
parameters = "q": "X",
              "scope": "public_content",
              "access_token": "zzzzzzzzzzzzz"

response = requests.get("https://api.instagram.com/v1/tags/search",
                        params=parameters)
insta_posts = response.json()

我是否为沙盒使用了正确的 URL?我阅读了 Instagram API 文档,并且 Sandbox 中的应用程序不需要任何类型的批准即可更改范围。

此外,该应用程序仅被授权用于沙盒:

Screen Capture of Application Defined in Instagram API

【问题讨论】:

我也有这个问题!该应用程序在沙盒模式下运行,我无法获取任何内容。奇怪.. 嗨 tubu13...我将继续研究如何解决这个问题。如果您发现任何问题,请告诉我...欢迎提供任何线索。我也会这样做。干杯。 您好 tubu13,已解决...您需要在调用 API 之前更改 Instagram 的授权范围。我将在原帖中解释这一点。希望对您有所帮助。 获取范围:转到以下链接中的登录权限instagram.com/developer/authorization 文档可以在这里找到:instagram.com/developer/authentication 【参考方案1】:

我知道发生了什么。首先需要更改应用程序的授权范围。我就是这样做的:

从您的浏览器执行:

https://api.instagram.com/oauth/authorize/?client_id=CLIENTID&redirect_uri=REDIRECT-URI&response_type=code&scope=SCOPE

只需要为大写的单词插入数据

一旦完成,应用程序就被授权用于该范围。

因为我已经有了访问令牌,所以我不需要执行第 2 步和第 3 步。

【讨论】:

这行得通!奇怪的是在文档中找不到任何提及的内容。相反,它说客户端自动有权访问沙盒用户数据。 是的,马科斯...我在文档中也找不到它...花了很多时间才找到...很高兴它有帮助。 更多关于 SCOPE 值的信息:instagram.com/developer/authorization 这个问题没有很好的记录。这让很多人感到困惑,所以我在how the new Instagram API works 上为开发人员写了一个简短的总结。 @Martin Rasumoff 我怎样才能找到注册的 url:"error_type": "OAuthException", "code": 400, "error_message": "重定向 URI 与注册的重定向 URI 不匹配"` 【参考方案2】:

这是一个很好的例子:

https://www.instagram.com/oauth/authorize?client_id=b23670e258o0fmk334jfu287c9f9953&redirect_uri=http://127.0.0.1:5000&response_type=code&scope=basic+public_content+follower_list+comments+relationships+likes

只需在 URL 末尾添加范围参数:

&scope=basic+public_content+follower_list+comments+relationships+likes

【讨论】:

感谢您发布实际范围参数!唯一更好的办法是将 URL 包含到有关范围的文档中。

以上是关于沙盒中的 OAuthPermissionsException Instagram API的主要内容,如果未能解决你的问题,请参考以下文章

沙盒中的 OAuthPermissionsException Instagram API

OS X 沙盒中的非就地保存

iBooks 能够读取其他应用程序沙盒中的文件

沙盒中的经典 API NVP、经典 ASP DoDirectPayment

沙盒中的 PayPal 支付数据传输“返回 URL”

沙盒中的文件的各自作用