查看完整的instagram个人资料图片php脚本帮助?

时间:2018-04-01 20:39:58

标签: php instagram

我有一个带有插件的wordpress网站,当你输入某人的Instagram用户名时,它会以全尺寸显示它。最近Instagram改变了他们的方式,所以它不再有效。我找到了一种可行的方法,但我不确定如何将其放入PHP代码中。

这是我找到的教程:

https://www.instagram.com/{username}/?_a=1

获取 userId

并获取个人资料图片网址 https://i.instagram.com/api/v1/users/{user_id}/info/

所以基本上你要做的就是用那里的用户名转到第一个链接,例如:https://www.instagram.com/JaredGoff/?__a=1

然后,您会找到应位于页面顶部附近的所有者ID ,例如:"owner":{"id":"35192126"}

您复制该数字字符串然后转到粘贴了ID的第二个链接,例如:https://i.instagram.com/api/v1/users/35192126/info/

您转到该链接并找到分辨率最高的scontent-lax3-1.cdninstagram.com链接。就在这里:https://scontent-lax3-1.cdninstagram.com/vp/0d671bfd2996c4f750e3022e92c2dffa/5B735E9F/t51.2885-19/s640x640/26073736_1686768224695889_7419777864670642176_n.jpg

然后我想要显示该图像。

这是我当前的代码不起作用:

function instagram(){

    $instagram_source = wp_remote_get("https://www.instagram.com/" . $_REQUEST['insta_username'] . "/?__a=1");
    $instagram_source = json_decode($instagram_source['body'], true);

    $profile_pic = $instagram_source['user']['profile_pic_url_hd'];
    $profile_pic = str_replace('/s150x150/', '/', $profile_pic);

    if(strlen($profile_pic) > 0){

        echo '<img src="' . $profile_pic . '">';
    }
    else{

        echo 'Profile does not exist.';
    }


    wp_die();
}

function wpb_load_widget() {

    register_widget( 'wpb_widget' );
}

class wpb_widget extends WP_Widget {

    function __construct() {
        parent::__construct('instaimage',
            __('Instagram Profile Image', 'Instalab'),
        array( 'description' => __( '', 'Instalab'),));
    }

    public function widget( $args, $instance ) {
        $title = apply_filters( 'widget_title', $instance['title'] );

        echo $args['before_widget'];

        echo '<form onsubmit="download_image(); return false;">
            <input placeholder="Enter instagram username" type="text" id="insta_username" name="insta_username">
            <a class="button is-primary" id="insta_submit">Show</a>
          </form><br>
          <div id="insta_image" style="width:100%;"></div>
          ';

        echo $args['after_widget'];
    }
}

?>

1 个答案:

答案 0 :(得分:0)

这是我的代码(我知道效率不高,但它有效):

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://www.instagram.com/$name/?__a=1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
curl_close($ch);
$json=json_decode($result);
$insta_id = $json->graphql->user->id;
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL,"https://i.instagram.com/api/v1/users/$insta_id/info/");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch1);
curl_close($ch1);
$json=json_decode($result);
$image_url = $json->user->hd_profile_pic_url_info->url;
if($image_url) {
  echo '<img src="'.$image_url.'"/>';
}