猿问

刷新 Instagram 长期访问令牌可以在浏览器 (http) 中工作

希望你能帮忙。

我正在尝试实现 Instagram 的基本显示 API,但不幸的是,我在生成长期访问令牌或使用 PHP/cURL 刷新现有长期令牌时遇到了问题。看来我并不是唯一一个遇到此问题或类似问题的人。

我遵循 Facebook 的入门指南(位于此处)并能够生成一个短期访问令牌,但这就是我对 PHP 的了解。奇怪的是,如果我直接通过 HTTP 调用任何端点(例如在浏览器中),则该调用可以完美地工作,并且我可以从短访问令牌中获取长期访问令牌,或者可以刷新现有的长期访问令牌。但它只能在浏览器中或在终端中使用 cURL 才能工作。

似乎 graph.instagram.com 要么阻止了我的网络服务器 IP,要么不喜欢众多可能的 cURL 选项之一。我尝试了很多不同的组合,但没有成功。我什至尝试从不同的网络服务器(不同的主机、不同的位置和IP,因此IP被阻止似乎不是这种情况)运行PHP脚本,但仍然没有运气。

我从 graph.instagram.com 收到的错误消息是:
IGApiException: Invalid OAuth 2.0 Access Token (error code 190)

我在这上面花费的时间比可行的要多,而且我已经厌倦了。必须有一个简单的解释来解释为什么一种方法有效而另一种方法无效。让我疯狂。

我缺少什么?请帮忙...重申一下,调用以下 URL(使用适当的短期/长期访问令牌)在浏览器/终端中可以正常工作,但在 PHP cURL 中则不行。为什么?我该如何解决这个问题?

生成长期访问令牌:
https://graph.instagram.com/access_token?grant_type=ig_exchange_token&client_secret={app-secret}&access_token={short-lived-access-token}

清爽:
https://graph.instagram.com/refresh_access_token?grant_type=ig_refresh_token&access_token={long-lived token}

注意:
据我所知,我已经正确设置了应用程序等。我假设如果我不这样做,我将无法首先生成访问代码,也无法生成短期访问令牌,更不用说刷新现有的长期访问令牌了。

咆哮:
我讨厌 Facebook。说真的,没有什么比它更值得叹息的直接和复杂的了


富国沪深
浏览 131回答 1
1回答

隔江千里

哇,在这个问题上花了几天时间,终于发布了这个问题,又只花了40分钟,我终于找到了解决方案。对于遇到类似问题的任何人,就我而言,问题是http_build_query(我用来设置 cURL GET 参数)以及两个 Web 服务器都设置了以下 php.ini 设置:arg_separator.output = "&"其中默认设置通常是:arg_separator.output = "&"要解决此问题,请更改 http_build_query 以使用&而不是像&这样:http_build_query($yourParams, null, '&');或者简单地将更改后的 php.ini 设置恢复为原始设置(风险由您自行承担)
随时随地看视频慕课网APP
我要回答