繁体   English   中英

如何在PHP中包含/调用此Javascript文件?

[英]How do include/call this Javascript file in PHP?

我正在编写一个PHP脚本,它使用Twitters API来获取JSON中的推文响应。 然后我在这个JSON中使用id作为Twitter的widgets.createTweet()函数中的参数。

官方Twitter文档可以在这里找到。

我相信问题是我试图在我的PHP脚本中包含Twitter widgets.js文件。

这是我的整个PHP脚本,其中包含我的密钥和令牌:

<?php

echo "<h2>Simple Twitter API Test</h2>";
require_once('TwitterAPIExchange.php');

$settings = array(
    'oauth_access_token' => ""
    'oauth_access_token_secret' => ""
    'consumer_key' => ""
    'consumer_secret' => ""
)

$url = "https://api.twitter.com/1.1/statuses/user_timeline.json";
$requestMethod = "GET";
if (isset($_GET['user']))  {$user = preg_replace("/[^A-Za-z0-9_]/", '', $_GET['user']);}  else {$user  = "iagdotme";}
$getfield = "?screen_name=$user&count=$count";
$twitter = new TwitterAPIExchange($settings);
$string = json_decode($twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest(),$assoc = TRUE);
if(array_key_exists("errors", $string)) {echo "<h3>Sorry, there was a problem.</h3><p>Twitter returned the following error message:</p><p><em>".$string[errors][0]["message"]."</em></p>";exit();}

$number_tweets = count($string['statuses']);

//                  THIS IS THE PROBLEM AREA      ///////////

echo "<script sync src='https://platform.twitter.com/widgets.js'></script>"

echo "<div class='cols'>";
foreach ($tweet_array['statuses'] as $tweet ) {
  $id = $tweet["id"];
  echo "<div class='grid-item'><div id='container-$id'></div></div>";
$js_array[] = "twttr.widgets.createTweet('$id', document.getElementById('container-$id'));";
}
echo "</div>";
echo '<script>';
$t = 1;
foreach ($js_array as $js) {
  echo $js;

  $t++;
}
echo '</script>';
?>

我相信问题是我试图在https://platform.twitter.com/widgets.js中包含js文件

在我看来,这里的其他一切都应该有效。 当我尝试在浏览器中打开它时,这个php文件没有给我任何错误。 我被卡住了。

我要对这段代码做些什么:

  • 对Twitter进行API调用并检索一组推文
  • 使用这些推文中的id来传递

我该怎么做呢:

  • 使用php我在一个开源的php库/ api包装器的帮助下对Twitter进行了成功的API调用。

  • 将JSON响应存储在一个数组中,循环遍历该数组获取tweet id(json中每条推文的属性)

  • 使用这些id作为twitter的createTweet函数的参数

我的问题是:

我认为问题是,当我使用twttr.widgets.createTweet() js函数时,我的代码不知道我的意思,因为没有正确包含htts://platform.twitter.com/widgets.js。

重申一下,这是我试图包含该文件的地方:

echo "<script sync src='https://platform.twitter.com/widgets.js'></script>"

这件作品是否包括在内? 如果是这样,还有其他东西突然出现错误吗?

以下是来自twitter API调用的JSON响应示例。

    {
"statuses": [
    {
        "created_at": "Wed May 15 15:13:53 +0000 2019",
        "id": 1128679903329542144,
        "id_str": "1128679903329542144",
        "text": "Araw-gabi nasa isip ka, napapanagip ka kahit sa'n magpunta",
        "truncated": false,
        "entities": {
            "hashtags": [],
            "symbols": [],
            "user_mentions": [],
            "urls": []
        },
        "metadata": {
            "iso_language_code": "tl",
            "result_type": "recent"
        },
        "source": "<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android</a>",
        "in_reply_to_status_id": null,
        "in_reply_to_status_id_str": null,
        "in_reply_to_user_id": null,
        "in_reply_to_user_id_str": null,
        "in_reply_to_screen_name": null,
        "user": {
            "id": 1016132854999183360,
            "id_str": "1016132854999183360",
            "name": "L Y S A💛",
            "screen_name": "ilysachn",
            "location": "Home📍",
            "description": "",
            "url": null,
            "entities": {
                "description": {
                    "urls": []
                }
            },
            "protected": false,
            "followers_count": 97,
            "friends_count": 73,
            "listed_count": 0,
            "created_at": "Mon Jul 09 01:32:06 +0000 2018",
            "favourites_count": 624,
            "utc_offset": null,
            "time_zone": null,
            "geo_enabled": true,
            "verified": false,
            "statuses_count": 188,
            "lang": "en",
            "contributors_enabled": false,
            "is_translator": false,
            "is_translation_enabled": false,
            "profile_background_color": "F5F8FA",
            "profile_background_image_url": null,
            "profile_background_image_url_https": null,
            "profile_background_tile": false,
            "profile_image_url": "http://pbs.twimg.com/profile_images/1125769288797675520/3Ez4FP9n_normal.jpg",
            "profile_image_url_https": "https://pbs.twimg.com/profile_images/1125769288797675520/3Ez4FP9n_normal.jpg",
            "profile_banner_url": "https://pbs.twimg.com/profile_banners/1016132854999183360/1553425392",
            "profile_link_color": "1DA1F2",
            "profile_sidebar_border_color": "C0DEED",
            "profile_sidebar_fill_color": "DDEEF6",
            "profile_text_color": "333333",
            "profile_use_background_image": true,
            "has_extended_profile": false,
            "default_profile": true,
            "default_profile_image": false,
            "following": false,
            "follow_request_sent": false,
            "notifications": false,
            "translator_type": "none"
        },
        "geo": null,
        "coordinates": null,
        "place": null,
        "contributors": null,
        "is_quote_status": false,
        "retweet_count": 0,
        "favorite_count": 0,
        "favorited": false,
        "retweeted": false,
        "lang": "tl"
    },

如果你想知道运行时使用的是什么语法错误,请使用phpstorm。

我修复错误,现在代码看起来像这样,你的脚本将在php文件中连接。

<?php

echo "<h2>Simple Twitter API Test</h2>";
require_once('TwitterAPIExchange.php');

$settings = [
    'oauth_access_token' => "",
    'oauth_access_token_secret' => "",
    'consumer_key' => "",
    'consumer_secret' => ""
];

$url = "https://api.twitter.com/1.1/statuses/user_timeline.json";
$requestMethod = "GET";
if (isset($_GET['user'])) {
    $user = preg_replace("/[^A-Za-z0-9_]/", '', $_GET['user']);
} else {
    $user  = "iagdotme";
}

$getfield = "?screen_name=$user&count=$count";
$twitter = new TwitterAPIExchange($settings);
$string = json_decode($twitter->setGetfield($getfield)
    ->buildOauth($url, $requestMethod)
    ->performRequest(),$assoc = TRUE);
if(array_key_exists("errors", $string)) {
    echo "<h3>Sorry, there was a problem.</h3><p>Twitter returned the following error message:</p><p><em>".$string["errors"][0]["message"]."</em></p>";exit();
}

$number_tweets = count($string['statuses']);

?>
<script sync src='https://platform.twitter.com/widgets.js'></script>

<?php

echo "<div class='cols'>";
foreach ($tweet_array['statuses'] as $tweet ) {
    $id = $tweet["id"];
    echo "<div class='grid-item'><div id='container-$id'></div></div>";
    $js_array[] = "twttr.widgets.createTweet('$id', document.getElementById('container-$id'));";
}

echo "</div>";

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM