【发布时间】:2015-02-17 15:27:25
【问题描述】:
我正在尝试使用 OAuth for Instagram 进行身份验证,计划使用 PHP 和 cURL。第一步是检索“代码”,例如:
fd7d5f6cde6c47e4a86ba28b22ac4583
我之前使用过 Twitter API,它的工作方式类似。我将代码换成access_token,然后我就可以进行身份验证了。
问题在于,身份验证的方法是在显示“我授予权限”的窗口上点击一个按钮。这是那个窗口:
我的问题:有没有不需要点击这个 URL 的方法来做到这一点?
例如,有没有办法让我使用我的脚本来自动化这个过程?当我使用 Twitter 时,我能够使用 cURL 转到此链接并通过身份验证,然后检索此代码。
这是一个项目的一部分,仅供我自己使用,主要用于检索我自己最近的 instagram。我不希望我网站的访问者每次出现时都必须点击“授权”。
目前我只是这样做,有什么可以添加到 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。
【问题讨论】:
-
您应该能够在 PHP 中检索您自己的 Instagram,而不会在客户端出现任何 JavaScript 弹出窗口。这将需要一个 Instagram API 机密,它应该可以在没有看到此对话框的情况下正常工作。这看起来像您要求用户授权访问他们的帐户,这是非常不同的。
-
@halfer 这正是我所期待的。你能链接到文档中说我可以使用密钥和秘密进行身份验证的地方吗?我没有发现任何提及它。
-
你在使用图书馆吗?有一个few GitHub results here 可能值得一试。 (我不能肯定地说,因为我没有使用过 Instagram 或其 API)。
标签: php curl oauth instagram instagram-api