我正在通过移动应用向 Instagram API 发出请求。目前,我只是将用户定向到 Instagram 身份验证 URL 并将响应类型指定为“access_token”。指定此response_type称为隐式身份验证。
显式身份验证:response_type=code 隐式身份验证:response_type=access_token
我正在尝试绕过需要建立网络服务来促进显式身份验证的情况。这是必要的,因为在显式身份验证流程中,Instagram API 需要调用重定向 URL 并传入“代码”参数。然后,我的服务器端代码将使用该代码向 Instagram 发出访问 token 的最终请求。
移动应用程序使用隐式流程会更加高效,因为不需要额外的私有(private)维护的身份验证服务来处理它。
Instagram 支持以下范围:
- 基本 - 读取与用户相关的任何和所有数据(例如 关注/关注列表、照片等)(默认授予)
- 评论 - 代表用户创建或删除评论
- 关系 - 代表用户关注和取消关注用户
- 喜欢 - 代表用户喜欢和不喜欢项目
当我制定除“基本”之外的任何其他类型的范围规范时,当用户在身份验证 URL 处提供凭据时,我会收到以下响应:
{"code": 400, "error_type": "OAuthException", "error_message": "Invalid scope field(s): basic+likes"}
除“基本”之外的任何范围组合都会给出相同的响应。
所以,我的问题是:
- 是否需要显式身份验证才能指定“基本”之外的范围?
- 我是否需要指定 response_type=code 才能使扩展范围发挥作用?
- 这是 Instagram 的限制,还是 OAuth 2.0 的限制?
提前致谢。
最佳答案
我刚刚尝试使用隐式 oauth 流程与我的 client_id 和 scope=basic+likes ,它起作用了。将下面的 url 替换为您的 client_id 和 redirect_uri,然后尝试。
https://instagram.com/oauth/authorize/?client_id=CLIENT_ID&redirect_uri=REDIRECT-URI&response_type=token&scope=basic+likes
可能是 Instagram 不允许新客户帐户使用基本范围以外的范围...
关于oauth - Instagram API : do scopes work with OAuth2 implicit authentication flow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20580535/