【发布时间】:2017-03-31 10:47:13
【问题描述】:
我正在尝试使用 Instagram PHP API 来获取朋友的照片。我注册为沙盒用户和虚拟用户,随机发布的图片很少。然后,我邀请虚拟用户授权沙盒中的应用程序连接他的帐户。
为了获取访问令牌,我发送了一个获取代码的请求,然后获取具有范围的访问令牌:
https://api.instagram.com/oauth/access_token?client_id=CLIENT_ID&client_secret=SECRET_STRING&grant_type=authorization_code&redirect_uri=http://localhost/&code=CODE&scope=basic+public_content+comments+likes`
PHP 代码:
$url = 'https://api.instagram.com/oauth/access_token';
$payload = [
$GLOBALS['KEY_CID'] => $GLOBALS['VAL_CID'],
$GLOBALS['KEY_CECRET'] => $GLOBALS['VAL_CECRET'],
'grant_type' => 'authorization_code',
'redirect_uri' => 'http://localhost/',
'code' => $param_code,
'scope' => 'basic+public_content+comments+likes'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); // url
curl_setopt($ch, CURLOPT_POST, true); // POST
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); // POST DATA
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // RETURN RESULT true
curl_setopt($ch, CURLOPT_HEADER, 0); // RETURN HEADER false
curl_setopt($ch, CURLOPT_NOBODY, 0); // NO RETURN BODY false / we need the body to return
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // VERIFY SSL HOST false
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // VERIFY SSL PEER false
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
在我成功获得访问令牌之后。
我尝试从沙盒用户那里获取图像,该用户是我为测试创建的虚拟帐户:
https://api.instagram.com/v1/users/fane.leee/media/recent?access_token=ACCESS_TOKEN
获取图片的PHP代码:
$url = 'https://api.instagram.com/v1/users/fane.leee/media/recent?access_token='.$ACCESS_TOKEN;
$ch = curl_init(); // initializing
curl_setopt( $ch, CURLOPT_URL, $url ); // API URL to connect
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); // return the result, do not print
curl_setopt( $ch, CURLOPT_TIMEOUT, 30 );
$response = json_decode(curl_exec($ch), true); // connect and get json data
curl_close($ch);
问题
获取图片请求的 $response 是NULL,没有错误信息。有人对这个问题有任何想法吗?
谢谢。
参考
Instagram 开发文档 authentication 和authorization。
Instagram 开发文档 about user endpoints
另一个关于 Instagram 网络 API 的 StackOverflow post
开发环境:
Ubuntu 16.04
Apache2
PHP 7.0.8
MySQL 14.14
编辑 1:添加调用 cUrl 函数的 PHP 代码。
编辑2:如果我用'self'替换用户ID'fane.leee',我可以检索我发布的图像。我还关注了用户“fane.leee”。我还应该做些什么来检索朋友的媒体?
【问题讨论】:
-
请贴一些代码。
-
感谢您的 cmets,已添加代码 :)
-
您添加了沙盒用户吗?
-
是的,正如我在第一段中描述的那样,我创建了一个虚拟帐户,发布了一些图像并将虚拟帐户添加为沙盒用户。结果,虚拟用户的用户 ID 列在
sandbox users列表中。所以管理员名称下的sandbox users列表中有两个用户,一个是admin,另一个是接受邀请的虚拟用户。干杯:) -
从您发布的文档看来:
$GLOBALS['KEY_CID'] => $GLOBALS['VAL_CID'], $GLOBALS['KEY_CECRET'] => $GLOBALS['VAL_CECRET'],应该是:` 'client_id' => $GLOBALS['VAL_CID'], 'client_secret' => $GLOBALS['VAL_CECRET'] , `
标签: php curl instagram-api