Что я сделал
- Я успешно получил набор твитов из API Twitter и могу проанализировать json, чтобы показать атрибуты твита в тексте на веб-странице.
Что я хочу сделать
Я хочу использовать идентификатор из ответа и встроить их в страницу.
Мои предположения
Я предполагаю, что мне нужно использовать цикл foreach и выполнять итерацию по JSON, а затем передавать каждый идентификатор в фрагмент кода, который фактически выполняет встраивание.
Моя проблема
Код, который я нашел здесь использует javascript для встраивания. Этот код прекрасно работает, когда твит-идентификатор жестко запрограммирован. Мне нужно передать каждый идентификатор, полученный из ответа, и не могу понять, как передать массив php в фрагмент javascript.
Вот что я сделал:
У меня есть php-скрипт, который успешно получает ответ JSON из твиттера Код ниже:
<?php
//using a open sourced php library to complete the API call
require_once('TwitterAPIExchange.php')
$settings = array(
'oauth_access_token' => "my_token",
'oauth_access_token_secret' => "my_token_secret",
'consumer_key' => "my_key"
'consumer_secret' => "my_key_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 = "son_mi";}
$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();}
?>
Это код, который я нашел, который может вставлять твит с Javascript
<style>
#tweet {
width: 400px !important;
}
#tweet iframe {
border: none !important;
box-shadow: none !important;
}
</style>
<div id="tweet" tweetID="515490786800963584"></div>
<script sync src="https://platform.twitter.com/widgets.js"></script>
<script>
window.onload = (function(){
var tweet = document.getElementById("tweet");
var id = tweet.getAttribute("tweetID");
twttr.widgets.createTweet(
id, tweet,
{
conversation : 'none;,
cards : 'hidden',
linkColor : '#cc0000',
theme : 'light'
})
.then (function (el) {
el.contentDocument.querySelector(".footer").style.display = "none";
});
});
</script>
Код также можно найти здесь .
Как я могу передать идентификаторы из ответа Twitter
Где взять ID здесь:
<div id="tweet" tweetID="515490786800963584"></div>
Я попытался удалить эту строку:
<div id="tweet" tweetID="515490786800963584"></div>
затем в сценарии:
<script sync src="https://platform.twitter.com/widgets.js"></script>
<script>
window.onload = (function(){
<?php foreach ($string as $item_tweets)?>
{
var tweet = document.getElementById("<$php echo $item_tweets?>");
var id = tweet.getAttribute("<?php echo $item_tweets.['id']?>");
twttr.widgets.createTweet(
id, tweet,
{
conversation : 'none',
cards : 'hidden',
linkColor : '#cc0000',
theme : 'light'
})
.then (function (el) {
el.contentDocument.querySelector(".footer").style.display = "none";
});
}
});
Этот код не работает, и я не уверен, что это так, потому что что-то в корне неверно в том, как я помещаю PHP foreach в теги, или я просто неправильно выполняю итерацию.