简体   繁体   中英

How do include/call this Javascript file in PHP?

I am writing a PHP script that uses Twitters API's to get a response of tweets in JSON. I am then using the id's in this JSON as parameters in Twitter's widgets.createTweet() function.

The official twitter documentation for this can be found here .

I believe the problem is at the point where I am trying to icnlude the Twitter widgets.js file within my PHP script.

Here is my entire PHP script with my keys and tokens redacted:

<?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>';
?>

I believe the problem is where I am trying to include the js file from https://platform.twitter.com/widgets.js

It seems to me like everything else here should work. This php file doesn't give me any errors when I try to open it in a browser. I am stuck.

What I'm tyring to do with this code:

  • make an API call to Twitter and retrieve a set of tweets
  • use the id's in those tweets to pass

How am I trying to do it:

  • Using php I have made a successful API call to Twitter with the assistance of an open sourced php library/api wrapper.

  • store the JSON response in an array, loop through that array getting the tweet id's (attributes for each tweet within the json)

  • use those id's as parameters for twitter's createTweet function

What my problem is:

I think the problem is, is that my code doesn't know what I mean when I use the twttr.widgets.createTweet() js function because htts://platform.twitter.com/widgets.js is not included properly.

To reiterate, this is where I am trying to include that file:

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

Is that piece included properly? If so, are there other things that pop out as erroneous?

Here is a sample of the JSON response from the twitter API call.

    {
"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"
    },

If you want to know what syntax errors you have in runtime use phpstorm.

I fix errors and now code looks like this and your script will connect in php file.

<?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>";

?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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