如何在没有用户交互的情况下获取 instagram access_token(新 api)?
Posted
技术标签:
【中文标题】如何在没有用户交互的情况下获取 instagram access_token(新 api)?【英文标题】:How to get instagram access_token without user interaction(new api)? 【发布时间】:2016-10-07 21:06:46 【问题描述】:随着 instagrams 新 api 的变化,似乎没有某种用户交互就无法获得 access_token。我找到的所有文档都表明,在通过用户交互授权应用程序时必须通过登录 (https://www.instagram.com/developer/authentication/):
服务器端(显式)流
第一步:将您的用户引导至我们的授权网址
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code 注意:您可以提供一个可选的范围参数来请求 “基本”权限范围之外的其他权限。学习 更多关于范围的信息。
注意:您可以提供一个可选的状态参数来执行 服务器特定的状态。例如,您可以使用它来保护 针对 CSRF 问题。
此时,我们向用户展示了一个登录屏幕,然后是 确认屏幕在哪里授予您的应用访问她的 Instagram 的权限 数据。
客户端(隐式)身份验证
第一步:将您的用户引导至我们的授权网址
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token 此时,我们向用户展示了一个登录屏幕,然后是 确认屏幕,他们授予您的应用访问他们的 Instagram 数据。 请注意,与显式流不同,响应类型 这里是“令牌”。
通过定期刷新的access_token,是否有可能在没有用户交互的情况下获取访问令牌?
我正在尝试在我的网站上显示我的提要,但除了 API 更改后他们提供的嵌入选项之外,我没有找到其他方法。
编辑:我的问题被标记为 Instagram OAuth Access Token expiration for app 的欺骗,但我不打算弄清楚过期时间(IG 文档中没有明确定义)。我想要一种纯粹的编程方式来获取 access_token。
【问题讨论】:
这个问题没有解决在没有用户交互的情况下获得 access_token 的可能性,它只解决了令牌的到期问题 公平评论。我已经删除了标志。 【参考方案1】:我也遇到了这个问题。我假设您想编写一个脚本来为您运行。
一个(相当蹩脚的)解决方案是在从以下重定向网址...
很遗憾,Instagram 不允许这种类型的非用户必需的帐户选项。
【讨论】:
【参考方案2】:您可以将访问令牌存储在您的服务器中。 只要它有效,您就不需要要求您的用户登录。
请记住,访问令牌有一个到期日期。所以你也必须处理这种情况[即,在到期时,要求用户再次登录并获取并保存新的访问令牌]
【讨论】:
但是这种方法仍然需要某种用户交互才能使原始 access_token 正确? 假设您在使用他们的数据之前必须征得用户的许可。您只能让用户轻松登录,而不是每次登录,而是定期登录!。在没有用户交互的情况下访问用户数据在某种程度上是侵犯隐私。 @coderzAccessing user data without user interaction implicitly is privacy breach in some way
- 不是真的。如果用户希望允许某人(例如 MCN)代表他们执行操作,则每次访问令牌消失时,他们都必须开车前往 MCN 的营业部。
@NickKnuckle,如果您希望第 3 方应用代表用户执行操作,您首先需要他们的许可在令牌中。通过用户交互,我的意思是用户许可。在您进行的每个有效 API 调用中始终需要这样做。访问令牌是一种不用每次都用登录凭据打扰用户的方法。但是一旦过期,他们需要再次登录[据我所知]。希望我能说清楚。
@coderz 是的,我明白了,但我的声明仍然有效。访问令牌过期,用户需要重新授权,这并不总是可取的。例如,Youtube 有一个选项,您可以在您的帐户设置中允许另一个帐户成为“管理员”帐户,具有完全权限,并且不需要用户交互。【参考方案3】:
在 Instagram 开发者文档中,它指出:
https://www.instagram.com/developer/authorization/
个人网站的内容显示。如果您是开发人员并且您 想要在网站上展示 Instagram 内容,那么您不需要 提交您的应用以供审核。通过在沙盒模式下使用客户端,您 仍然可以访问任何沙盒用户的最后 20 个媒体 这授予您权限。
因此,如果您已经有一个使用 Instagram 设置的客户端,那么只要您处于“沙盒”模式,您就应该能够继续从 API 获取您的帖子。您只能为您自己的用户帐户或任何已授予您沙盒权限的用户获取帖子(限制为 10 个)。
如果您还没有访问令牌,则可以使用 Oauth.io 之类的东西。 (它是免费的。)
【讨论】:
以上是关于如何在没有用户交互的情况下获取 instagram access_token(新 api)?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有用户登录的情况下访问 Instagram Basic Display API?
如何在没有 API 的情况下获取 Instagram 中标签的所有图像?