各位开发人员,大家好,
我到处搜索,似乎这个问题仍未解决,有些似乎通过使用代理服务器或更改其 IP 地址来解决此问题,这在我的情况下不起作用。由于Instagram没有官方的PHP或JavaScript SDK,我需要在这里问这个问题。
当我尝试通过检索到的令牌对Instagram进行Oauth调用时,它将返回以下错误消息:
{"code": 400, "error_type": "OAuthException", "error_message": "Matching code was not found or was already used."}
我通过下面的代码包含供您观察:
获取令牌
private function getLoginURL($scopes = array("basic")) {
return self::API_OAUTH_URL."/?client_id=".self::CLIENT_ID."&redirect_uri=".self::REDIRECT_URI."&scope=".implode("+", $scopes)."&response_type=code";
}
身份验证 (Oauth 2.0)
private function auth() {
$api_data = array(
'client_id' => self::CLIENT_ID,
'client_secret' => self::CLIENT_SECRET,
'grant_type' => 'authorization_code',
'redirect_uri' => urlencode(self::TOKEN_URL),
'code' => self::TOKEN
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, self::TOKEN_URL);
curl_setopt($ch, CURLOPT_POST, count($api_data));
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($api_data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 90);
$json_data = curl_exec($ch);
curl_close($ch);
//return json_decode($json_data, true);
return $json_data;
}
有人可以帮我解决:(
问题:您的响应类型为 code
。
- 由于Instagram的API发生了新的变化,您需要
token
响应类型。 -
这可能需要对现有代码进行一些返工。
-
在使用
token
时,范围规范在后面。private function getLoginURL($scopes = array("basic")) { return self::API_OAUTH_URL."/?client_id=".self::CLIENT_ID."&redirect_uri=".self::REDIRECT_URI."&response_type=token&scope=".implode("+", $scopes); }