我有一个带有插件的wordpress网站,当你输入某人的Instagram用户名时,它会以全尺寸显示它。最近Instagram改变了他们的方式,所以它不再有效。我找到了一种可行的方法,但我不确定如何将其放入PHP
代码中。
这是我找到的教程:
从https://www.instagram.com/{username}/?_a=1
并获取个人资料图片网址
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'];
}
}
?>
答案 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.'"/>';
}