【问题标题】:Trying to get profile image from Twitter, what is wrong with this code?尝试从 Twitter 获取个人资料图片,此代码有什么问题?
【发布时间】:2013-04-07 15:58:58
【问题描述】:

我编写了这段代码,它运行但不为我返回个人资料图片。我也仔细检查了获取图片的网址。我到底哪里错了? 我还希望返回的图片大小为 150x150px。如何获得要显示的自定义尺寸。谢谢!

<?php
define('BASE_URL', 'http://api.twitter.com/1/users/profile_image/screen_name=');

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  $handle = $_POST['handle'];
  $size = 'bigger';
  if (isset($handle) && isset($size)) {
$twitterURL = BASE_URL . $handle . '&size=' . $size;
 }
}
?>


<!DOCTYPE HTML>
<html lang="it-IT">
<head>
<meta charset="UTF-8">
<title>Get TwitterPic</title>
<link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:200' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="style.css">

</head>
<body>

<div id="wrapper">
<h1>Get image from twitter</h1>

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
    <p><label for="handle">Twitter Handle</label>
        <input type="text" id="twitter" name="handle" placeholder="Twitter Handle"></p>



    <p><input type="submit" value="Get Twitter Pic"></p>
    </form>
  <?php if (isset($size) && isset($twitterURL)): ?>
<img src="<?= $twitterURL ?>">
  <?php endif; ?>
</div>



</body>
</html>

【问题讨论】:

  • 我没有看到你在任何地方设置$gravatarURL,并且你的PHP代码在显示twitter URL之前明确检查isset($gravatarURL),出于某种原因。
  • 编辑后:你确定 $twitterURL 设置正确吗?如果您直接从浏览器的地址栏访问它,是否显示图像?检查代码,您是否看到它在 的 src 属性中设置正确?
  • 是的,从浏览器访问 url 有效。

标签: php twitter


【解决方案1】:

查看 Twitter 的 API documentation 了解此方法:

此方法不得用作呈现给应用程序用户的图像源 URL。

此方法不返回图像数据,而是返回 HTTP 302 Redirect 标头,将 HTTP 请求重定向到新源。这不起作用,也不应该起作用。

另外,请注意,您使用的是 Twitter API 的 v1,该 API 已被弃用,并且可能随时停止工作。查看 API v1.1 的 users/show 方法。

【讨论】:

  • Ahan...如何重写我的代码以显示图像?这是否只返回 JSON?
  • 您必须使用 curl 获取用户/显示数据并使用 json_decode 将字符串解析为对象,然后您可以提取图像 uri 并在代码中使用它。
【解决方案2】:

首先我很好奇,因为它应该可以工作。然后我在您的代码中发现了多个问题。

你必须使用https://dev.twitter.com/docs/api/1/get/users/profile_image/:screen_name

这个代码必须改,你的变量名有错:

<?php if (isset($size) && isset($twitterURL)): ?>
<img src="<?= $twitterURL ?>">
  <?php endif; ?>

如果您不能使用现代 IDE 来防止这种情况发生,那么在开发过程中使用 error_level = ALL 会有很大帮助。

【讨论】:

  • 我更正了代码,但问题仍然存在。我可以从浏览器访问 url,所以 url 是正确的。
  • 这可能是因为 API 没有立即显示图像,而是将您重定向到图像。如果这是一个问题,您可能希望使用 curl 请求 API,获取最终 URL 并将其显示在您的 标记中。但是我发给你的代码对我来说非常有效。
  • 对我也有用!谢谢!想通了我的错误。但是如何更改图像的大小?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
  • 2011-04-16
相关资源
最近更新 更多