【问题标题】:Unable to get images from Instagram by using the provided PHP API无法使用提供的 PHP API 从 Instagram 获取图像
【发布时间】: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,没有错误信息。有人对这个问题有任何想法吗?

谢谢。


参考

  1. Instagram 开发文档 authenticationauthorization

  2. Instagram 开发文档 about user endpoints

  3. 另一个关于 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


【解决方案1】:

fane.leee 是用户名。 Instagram 需要 API 调用者中的用户 ID。

要通过调用 instagram API 函数来获取用户 ID,我们可以使用
https://www.instagram.com/{username}/?__a=1

获取用户 ID 的另一种方法是使用第 3 方网站。它能够从用户名中检索 Instagram 用户 ID。是here


参考:
Thinh Vu 在this thread - Not the accepted answer, but the answer underneath. P.S the accepted answer is not working anymore.

中的回答

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多