我使用的是oauth库中的hybridauth-3.7.1
。https://github.com/hybridauth/hybridauth/releases
库工作完美,所以我有以下内容:
<?php
require_once 'hybridauth-3.7.1/vendor/autoload.php';
$config = [
'callback' => 'my_callback_url',
'keys' => [
'id' => 'my_app_id',
'secret' => 'my_secret'
],
];
$adapter = new HybridauthProviderReddit( $config );
$adapter->authenticate();
$userProfile = $adapter->getUserProfile();
$photo = $userProfile->photoURL;
如果我回显$photo,我得到:https://styles.redditmedia.com/t5_55fo22/styles/profileIcon_bblqmk8klas71.png?width=256&身高= 256,作物= 256:256 smart& s = 30 a3bb6af945eadeaddb40271d2c0161ca82768d
现在如果我尝试:
imagecreatefrompng($photo);
my logs return:
imagecreatefrompng( https://styles.redditmedia.com/t5_55fo22/styles/profileIcon_bblqmk8klas71.png?width=256&amp;height=256&amp;crop=256:256,smart&amp;s=30a3bb6af945eadeaddb40271d2c0161ca82768d ): failed`
所以url在回显中正确返回,但是从日志中可以看出imagecreatefroming添加了一个奇怪的&
i have also tried
imagecreatefrompng(urldecode($photo));
和
$decoded_photo = urldecode($photo);
imagecreatefrompng($decoded_photo);
返回相同的错误日志。
但是,如果我手动输入url,它可以正常工作。
imagecreatefrompng( 'https://styles.redditmedia.com/t5_55fo22/styles/profileIcon_bblqmk8klas71.png?width=256&height=256&crop=256:256,smart&s=30a3bb6af945eadeaddb40271d2c0161ca82768d' );
我怎么能得到返回的图像url与imagecreatefromping工作?
问题是,当直接粘贴url时,如上一个示例所示,我没有意识到剪切和粘贴与实际源不同。
这意味着虽然我复制的是&height=256...
,但实际的源代码是&=256...
,因此当我试图复制imagecreatefrompng()
时,它正在编码已经编码的&
,从而导致&amp;
修改$userProfile->photoUrl
,如下所示。
$photo = htmlspecialchars_decode($userProfile->photoURL);
imagecreatefrompng($photo);