2013-06-13 17 views
5

Użyłem tej wtyczki na mojej stronie internetowej do wyświetlania tweets, ale nawet strona plugin ma problem:jquery.tweet.js plugin nie działa, jak pokazać tweety

http://coda.co.za/content/projects/jquery.twitter/

Kod:

<div class="columns"> 
    <pre class="code"> 
        jQuery(function($){ 
         $("#twitter").tweet({ 
         join_text: "auto", 
         username: "Jquery", 
         avatar_size: 48, 
         count: 4, 
         auto_join_text_default: "", 
         auto_join_text_ed: "", 
         auto_join_text_ing: "", 
         auto_join_text_reply: "", 
         auto_join_text_url: "", 
         loading_text: "loading tweets..." 
         }); 
        }); 
     </pre> 
    <div id="twitter"></div> 

Co trzecia wtyczka (chyba) nie działa. Widziałem też:

http://tweet.seaofclouds.com/

Więc, co byłoby zastąpienie?

Jeśli odwiedziłeś powyższe linki, być może zrozumiałeś, gdzie jest problem.

+0

określenie „nie działa”. dowolny błąd JS? – Raptor

+0

@ ShivanRaptor - to błąd Twittera, być może przestali korzystać z wtyczek firm trzecich – Asif

+0

dlaczego nie korzystasz z Twitter API? – Raptor

Odpowiedz

7

Od twitter zmieniła od non uwierzytelniony 1.0 API do OAuth 1.1, musisz teraz wykonać proxy żądania API przez PHP, jeśli chcesz używać tej wtyczki.

Oto PHP do proxy żądania. Utworzyć tę stronę jako twitter-proxy.php w witrynie i zaktualizować wartości oauth_access_token, oauth_access_token_secret, consumer_key, consumer_secret i SCREEN_NAME odzwierciedlać własnego konta Twitter.

Odwiedź stronę https://dev.twitter.com/apps, jeśli chcesz utworzyć aplikację, aby uzyskać te wartości.

<?php 
/* Twitter Proxy for updated OAuth */ 
$config = array(
    //Twitter OAuth config 
    'oauth_access_token' => 'get from twitter', 
    'oauth_access_token_secret' => 'get from twitter', 
    'consumer_key' => 'get from twitter', 
    'consumer_secret' => 'get from twitter', 
    'base_url' => 'https://api.twitter.com/1.1/', 
    //Request specific user 
    'screen_name' => 'your_twitter_screenname', 
    'count' => 3 
); 

$twitter_request = 'statuses/user_timeline.json?screen_name='.$config['screen_name'].'&count='.$config['count']; 

// Parse $twitter_request into URL parameters 
$url_part = parse_url($twitter_request); 

/* url_arguments= 
* Array 
* (
* [screen_name] => lcherone 
* [count] => 3 
*) 
*/ 
parse_str($url_part['query'], $url_arguments); 

$base_url = $config['base_url'].$url_part['path']; 
$full_url = $config['base_url'].$twitter_request; 

// Set up the OAuth authorization array 
$oauth = array(
'oauth_consumer_key' => $config['consumer_key'], 
'oauth_nonce' => time(), 
'oauth_signature_method' => 'HMAC-SHA1', 
'oauth_token' => $config['oauth_access_token'], 
'oauth_timestamp' => time(), 
'oauth_version' => '1.0' 
); 

// Build vectors for request 
$composite_request = _BaseString($base_url, 'GET', array_merge($oauth, $url_arguments)); 
$composite_key  = rawurlencode($config['consumer_secret']).'&'.rawurlencode($config['oauth_access_token_secret']); 
$oauth_signature = base64_encode(hash_hmac('sha1', $composite_request, $composite_key, true)); 
$oauth['oauth_signature'] = $oauth_signature; 

// Make cURL Request 
$options = array(
CURLOPT_HTTPHEADER => array(_AuthorizationHeader($oauth),'Expect:'), 
CURLOPT_HEADER => false, 
CURLOPT_URL => $full_url, 
CURLOPT_RETURNTRANSFER => true, 
CURLOPT_SSL_VERIFYPEER => false 
); 

$feed = curl_init(); 
curl_setopt_array($feed, $options); 
$result = curl_exec($feed); 
$info = curl_getinfo($feed); 
curl_close($feed); 

// Send suitable headers to the end user. 
if(isset($info['content_type']) && isset($info['size_download'])){ 
    header('Content-Type: '.$info['content_type']); 
    header('Content-Length: '.$info['size_download']); 
} 
exit($result); 

function _BaseString($base_url, $method, $values) { 
    $ret = array(); 
    ksort($values); 
    foreach($values as $key=>$value) 
    $ret[] = $key."=".rawurlencode($value); 
    return $method."&".rawurlencode($base_url).'&'.rawurlencode(implode('&', $ret)); 
} 

function _AuthorizationHeader($oauth) { 
    $ret = 'Authorization: OAuth '; 
    $values = array(); 
    foreach($oauth as $key=>$value) 
    $values[] = $key.'="'.rawurlencode($value).'"'; 
    $ret .= implode(', ', $values); 
    return $ret; 
} 
?> 

Teraz zastąpić istniejący build_api_url funkcji w pliku jquery.tweets.js z funkcji poniżej, upewniając się yoursite zastąpić.com

function build_api_url() { 
     var proto = ('https:' == document.location.protocol ? 'https:' : 'http:'); 
     var count = (s.fetch === null) ? s.count : s.fetch; 
     var common_params = '&callback=?'; 
     if (s.list) { 
     return 'http://yoursite.com/twitter-proxy.php?url='+s.username[0]+"/lists/"+s.list+"/statuses.json?page="+s.page+"&per_page="+count+common_params; 
     } else if (s.favorites) { 
     return 'http://yoursite.com/twitter-proxy.php?url=favorites.json?screen_name='+s.username[0]+"&page="+s.page+"&count="+count+common_params; 
     } else if (s.query === null && s.username.length == 1) { 
     return 'http://yoursite.com/twitter-proxy.php?url='+encodeURIComponent('statuses/user_timeline.json?screen_name='+s.username[0]+'&count='+count+common_params); 
     } else { 
     var query = (s.query || 'from:'+s.username.join(' OR from:')); 
     return 'http://yoursite.com/twitter-proxy.php?url=/search.json?&q='+encodeURIComponent(query)+'&rpp='+count+'&page='+s.page+common_params; 
     } 
} 

Aktualizacja 17.12.2014: Od 2014-02-27, Twitter requires the use of SSL to connect to its API servers. Zaktualizowałem kod, aby to odzwierciedlić.

+0

Przepraszam, chciałem JS lub jquery. – Asif

+0

Dzięki, pomogła mi przenieść się z wtyczki jquery.tweet.js - to działa. – BenLeah

3

Można bez dłużej korzystać z API Twittera 1.0 ponieważ wycofał się w dniu 11 czerwca 2013 r

Można zobaczyć przyczynę problemu, jeśli spróbujesz i zażądać 1.0 API, tak:

https://api.twitter.com/1/statuses/user_timeline.json?screen_name=omgmog

{ 
    "errors": [ 
     { 
      "message": "The Twitter REST API v1 is no longer active. Please migrate to API v1.1. https://dev.twitter.com/docs/api/1.1/overview.", 
      "code": 68 
     } 
    ] 
} 

jedynym sposobem, aby dostać tweetów na swojej stronie teraz jest albo:

  • Użyj widżetu Twitter, które zapewniają one w https://twitter.com/settings/widgets
  • ustawic skrypt po stronie serwera, aby pobrać tweety z 1.1 API, a następnie modyfikować wtyczki jquery.tweet.js do wykorzystania.

Możesz przeczytać więcej o 1.1 API tutaj: https://dev.twitter.com/docs/api/1.1/overview

To naprawdę denerwujące, mam kilka witryn, które muszą zostać przeniesione teraz

2

Zasadniczo wiadomość powrocie z Twitter jest w następujący sposób:

{"errors": [{"message": "The Twitter REST API v1 is no longer active. Please migrate to API v1.1. https://dev.twitter.com/docs/api/1.1/overview.", "code": 68}]} 

trzeba użyć wtyczki, co jest napisane na v1.1, w nowej wersji mają dodatkową warstwę bezpieczeństwa, więc trzeba uzyskać zezwolenie w celu aby uzyskać tweets przez API, tutaj są linki, które będą pomocne dla ciebie

http://www.webdevdoor.com/php/authenticating-twitter-feed-timeline-oauth/ http://www.fullondesign.co.uk/coding/2516-how-use-twitter-oauth-1-1-javascriptjquery.htm

Powiązane problemy