在不需要弹出窗口的情况下使用 Instagram 的 OAuth 进行身份验证 window
Authenticating with OAuth for Instagram without requiring a pop-up window
我正在尝试使用 OAuth for Instagram 进行身份验证,计划使用 PHP 和 cURL。第一步是检索 "code" 例如:
fd7d5f6cde6c47e4a86ba28b22ac4583
我以前使用过 Twitter API,它的工作方式类似。我将代码交换为 access_token
,然后我可以进行身份验证。
问题是验证方法是点击 window 上的按钮 "I give permission"。这是 window:
我的问题:有没有办法做到这一点而不需要点击这个URL?
例如,有没有办法使用我的脚本自动执行此过程?当我使用 Twitter 时,我能够使用 cURL 转到此 link 并通过身份验证,然后检索此代码。
这是一个项目的一部分,该项目 仅供我使用 主要用于检索我自己最近的 instagram。我不希望我网站的访问者每次出现时都必须点击 "authorise"。
目前我只是在做这个,有什么我可以添加到 URL 来自动授权的吗?
$auth_request_url = 'https://api.instagram.com/oauth/authorize/?client_id='.$client_id.'&redirect_uri='.$redirect_url .'&response_type=code';
/* Send user to authorisation */
header("Location: ".$auth_request_url);
下面是代码示例有效但仅一次:
$url = "https://api.instagram.com/oauth/access_token";
$access_token_parameters = array(
'client_id' => $client_id,
'client_secret' => $client_secret,
'grant_type' => 'authorization_code',
'redirect_uri' => $redirect_url,
'code' => $code
);
$curl = curl_init($url); // we init curl by passing the url
curl_setopt($curl,CURLOPT_POST,true); // to send a POST request
curl_setopt($curl,CURLOPT_POSTFIELDS,$access_token_parameters); // indicate the data to send
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // to stop cURL from verifying the peer's certificate.
$result = curl_exec($curl); // to perform the curl session
curl_close($curl); // to close the curl session
$arr = json_decode($result,true);
我从 URL 的末尾手动获取了 $code
。但是用一次就过期了。所以我需要弄清楚如何 运行 并在每次我想执行脚本时检索 $code
。
只有在您的客户第一次向用户提出请求时才需要批准,这是无法避免的。您正在从最终用户那里获取信息,如果客户可以从用户那里获取该信息或权限而无需他们至少一次明确批准,那将是一个巨大的安全漏洞。但在第一次之后,应为您的客户存储和重复使用同意。
我知道这有点老了,但我认为:
https://api.instagram.com/oauth/authorize/?client_id='.$client_id.'&redirect_uri='.$redirect_url .'&response_type=code';
之后
它将重定向到您的 $redirect_url/?code=XXXXXXXXXXXXX
因此您可以通过 $code = $_GET['code']
检索代码
我正在尝试使用 OAuth for Instagram 进行身份验证,计划使用 PHP 和 cURL。第一步是检索 "code" 例如:
fd7d5f6cde6c47e4a86ba28b22ac4583
我以前使用过 Twitter API,它的工作方式类似。我将代码交换为 access_token
,然后我可以进行身份验证。
问题是验证方法是点击 window 上的按钮 "I give permission"。这是 window:
我的问题:有没有办法做到这一点而不需要点击这个URL?
例如,有没有办法使用我的脚本自动执行此过程?当我使用 Twitter 时,我能够使用 cURL 转到此 link 并通过身份验证,然后检索此代码。
这是一个项目的一部分,该项目 仅供我使用 主要用于检索我自己最近的 instagram。我不希望我网站的访问者每次出现时都必须点击 "authorise"。
目前我只是在做这个,有什么我可以添加到 URL 来自动授权的吗?
$auth_request_url = 'https://api.instagram.com/oauth/authorize/?client_id='.$client_id.'&redirect_uri='.$redirect_url .'&response_type=code';
/* Send user to authorisation */
header("Location: ".$auth_request_url);
下面是代码示例有效但仅一次:
$url = "https://api.instagram.com/oauth/access_token";
$access_token_parameters = array(
'client_id' => $client_id,
'client_secret' => $client_secret,
'grant_type' => 'authorization_code',
'redirect_uri' => $redirect_url,
'code' => $code
);
$curl = curl_init($url); // we init curl by passing the url
curl_setopt($curl,CURLOPT_POST,true); // to send a POST request
curl_setopt($curl,CURLOPT_POSTFIELDS,$access_token_parameters); // indicate the data to send
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // to stop cURL from verifying the peer's certificate.
$result = curl_exec($curl); // to perform the curl session
curl_close($curl); // to close the curl session
$arr = json_decode($result,true);
我从 URL 的末尾手动获取了 $code
。但是用一次就过期了。所以我需要弄清楚如何 运行 并在每次我想执行脚本时检索 $code
。
只有在您的客户第一次向用户提出请求时才需要批准,这是无法避免的。您正在从最终用户那里获取信息,如果客户可以从用户那里获取该信息或权限而无需他们至少一次明确批准,那将是一个巨大的安全漏洞。但在第一次之后,应为您的客户存储和重复使用同意。
我知道这有点老了,但我认为:
https://api.instagram.com/oauth/authorize/?client_id='.$client_id.'&redirect_uri='.$redirect_url .'&response_type=code';
它将重定向到您的 $redirect_url/?code=XXXXXXXXXXXXX
因此您可以通过 $code = $_GET['code']