PHP και Twitter API

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
nirvana
Δημοσιεύσεις: 241
Εγγραφή: 01 Σεπ 2005 18:28
Τοποθεσία: Αγ. Παρασκευή

PHP και Twitter API

Δημοσίευση από nirvana » 30 Μάιος 2012 03:20

Καλησπέρα.

Έχω αρχίσει να πειραματιζομαι με το Api του twitter, και χρησιμοποιώ την twitteroauth library του Abraham Williams.

Έχω φτιάξει κάτι πολύ απλό που δουλεύει. Το θέμα μου είναι αν είναι ο σωστός τρόπος. Γιατί εμένα μου φαίνεται περίπλοκος για αυτό που κάνει.

Έστω 3 αρχεία. Το twitterlogin.php το dashboard.php και το posttotwitter.php. Το twitterlogin ειναι το αρχικό αρχείο που θα κάνει τον χρήστη redirect στην εφαρμογή του twitter που έχω φτιάξει. Το dashboard.php θα εμφανίζει κάποια tweets του χρήστη ή των χρηστών που ακολουθάει. Το posttotwitter κανει post κάποιο tweet.

Το θέμα ειναι ότι το twitterlogin.php νομίζω ότι δεν έχει πρόβλημα. Με πάει στο dashboard.php που και αυτό με την σειρά του τα εμφανίζει όλα μια χαρά. Αν κάνω refresh ομως βγάζει μήνυμα λάθους και λεει "could not authenticate user". Οπότε σε κάθε refresh το βάζω να πηγαίνει πρώτα στο twitterlogin.php και μετά να κάνει redirect στο dashboard.

Αντιστοιχα το posttotwitter.php. Αν πάω μετά από το dashboard, δεν κάνει το authenticate. Οπότε πάλι περνάω από το twitterlogin.php για το authentication και μετά κάνω redirect στο posttotwitter.php

Όλο αυτό δεν μου φαίνεται και πολύ σοι. Και τί θα γίνει αν είμαι στο dashboard και θελήσω να φέρω με ajax τα καινουργια tweets. Μήπως θα μου πει could not authenticate? :)

Ζητάω από τους ειδικούς τα φώτα σας..

Το twitterlogin.php:

Κώδικας: Επιλογή όλων

<?
require&#40;"twitteroauth/twitteroauth.php"&#41;;
session_start&#40;&#41;;

$page = $_GET&#91;'page'&#93;;
if &#40;!$page&#41;
	$page = 'dashboard.php';
// The TwitterOAuth instance  
$twitteroauth = new TwitterOAuth&#40;'xxxxxxxxxxxxxxx', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'&#41;;  
// Requesting authentication tokens, the parameter is the URL we will be redirected to  
$request_token = $twitteroauth->getRequestToken&#40;'http&#58;//newsharetoall.returnsuccess.com/'.$page&#41;;  
 
// Saving them into the session  
$_SESSION&#91;'oauth_token'&#93; = $request_token&#91;'oauth_token'&#93;;  
$_SESSION&#91;'oauth_token_secret'&#93; = $request_token&#91;'oauth_token_secret'&#93;;  

// If everything goes well..  
if&#40;$twitteroauth->http_code==200&#41;&#123;  
	// Let's generate the URL and redirect  
	$url = $twitteroauth->getAuthorizeURL&#40;$request_token&#91;'oauth_token'&#93;&#41;; 
//$twitteroauth->url
    header&#40;'Location&#58; '. $url&#41;; 
&#125; else &#123; 
    // It's a bad idea to kill the script, but we've got to know when there's an error.  
    die&#40;'Something wrong happened.'&#41;;  
&#125;  
To dashboard.php:

Κώδικας: Επιλογή όλων

<?
	require&#40;"twitteroauth/twitteroauth.php"&#41;;
	//require&#40;"twitteroauth/OAuth.php"&#41;;
	session_start&#40;&#41;;

	if&#40;!empty&#40;$_GET&#91;'oauth_verifier'&#93;&#41; && !empty&#40;$_SESSION&#91;'oauth_token'&#93;&#41; && !empty&#40;$_SESSION&#91;'oauth_token_secret'&#93;&#41;&#41;&#123;  
			// TwitterOAuth instance, with two new parameters we got in twitter_login.php  
			$twitteroauth = new TwitterOAuth&#40;'xxxxxxxxxxxxxxx', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', $_SESSION&#91;'oauth_token'&#93;, $_SESSION&#91;'oauth_token_secret'&#93;&#41;;  
			$access_token = $twitteroauth->getAccessToken&#40;$_GET&#91;'oauth_verifier'&#93;&#41;; 
			$twitterSession->access_token = $access_token; 
			// Let's get the user's info 
			$user_info = $twitteroauth->get&#40;'account/verify_credentials'&#41;; 
			$user_timeline = $twitteroauth->get&#40;'statuses/user_timeline'&#41;; 
			$home_timeline = $twitteroauth->get&#40;'statuses/home_timeline', array&#40;'count' => '10'&#41;&#41;; 
    &#125;
	if &#40;$user_info->error&#41; &#123;
		header&#40;'Location&#58; twitterlogin.php'&#41;;
	&#125;
?>

<h2>User info</h2>
<pre>
<? print_r&#40;$user_info&#41;; ?>
</pre>

<h2>User timeline</h2>
<pre>
<? print_r&#40;$user_timeline&#41;; ?>
</pre>

<h2>Home timeline</h2>
<pre>
<? print_r&#40;$home_timeline&#41;; ?>
</pre>
και το posttotwitter.php:

Κώδικας: Επιλογή όλων


<?
require&#40;"twitteroauth/twitteroauth.php"&#41;;
session_start&#40;&#41;;

if &#40;!empty&#40;$_GET&#91;'oauth_verifier'&#93;&#41; && !empty&#40;$_SESSION&#91;'oauth_token'&#93;&#41; && !empty&#40;$_SESSION&#91;'oauth_token_secret'&#93;&#41;&#41; &#123; 
	echo "in if";
	// TwitterOAuth instance, with two new parameters we got in twitter_login.php  
	$twitteroauth = new TwitterOAuth&#40;'xxxxxxxxxxxxxxx', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', $_SESSION&#91;'oauth_token'&#93;, $_SESSION&#91;'oauth_token_secret'&#93;&#41;;  
	$access_token = $twitteroauth->getAccessToken&#40;$_GET&#91;'oauth_verifier'&#93;&#41;; 
	// Let's get the user's info 

	$twitteroauth->post&#40;'statuses/update', array&#40;'status' => 'testtweet'&#41;&#41;;
	//print_r&#40;$test&#41;;
&#125; else &#123; 
	header&#40;'Location&#58; twitterlogin.php?page=posttotwitter.php'&#41;; 
&#125;

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες