Twitter ombouwen naar oAuth
Ik heb een probleem met de oAuth authenticatie methodes van Twitter.
Ik wil iets heel simpels doen. Ik wil mijn eigen home_timeline weergeven op een website. Echter heb je hier dus authenticatie voor nodig, wat nu nog kan met cURL door simpel USERNAME:PASSWORD in te voeren in een CURL_SETOPT. Maar die ondersteuning vervalt officieel per 18 augustus en is vanaf dan niet meer beschikbaar.
Ik heb nu met diverse oAuth libraries geprobeert contact te maken met twitter en zodoende mijn home_timeline op te vragen. Echter kan dit niet, zonder dat de gebruiker inlogt. Iets wat niet echt user-friendly is.
Ik wil gewoon met mijn credentials inloggen bij twitter en mijn eigen tweets laten zien op een website.
Ik heb heel het web afgestruind op zoek naar een tutorial of voorbeeld, maar er valt niks te vinden.
Heeft iemand een snippet, stuk code, advies of een tutorial. Ik hoor het heel graag!
Ik zie dat er een oAuth.php geinclude wordt?
Volgens mij heb je het gehele package nodig
Wat ik wel zie is dat hij alleen de public timeline opvraagt. Daar hoef je ook niet voor te authentificeren, dat is een onbeveiligde xml of json feed. Heb je deze zelf gebruikt om je eigen home_timeline op te vragen?
In veel gevallen zal ik zo iets downloaden in het geheel en kijken hoe het in elkaar steekt en dan herschrijven naar wat bruikbaars
Edit: Werkt niet, dit script zit veel te moeilijk in elkaar en kan niet echt achterhalen welk
bestand ik nou moet includen om oauth werkend te krijgen.
Edit 2: Ik heb gebruik gemaakt van de standaard twitter oAuth library door ene Abraham.
Daarmee heb ik voor elkaar gekregen om onder mijn eigen acces_key authentication te krijgen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
require_once 'twitteroauth.php';
$consumerKey = 'key';
$consumerSecret = 'secret';
$oauthToken = 'token';
$oauthSecret = 'tokensecret';
$connection = new TwitterOAuth($consumerKey, $consumerSecret, $oauthToken, $oauthSecret);
$content = $connection->get('account/verify_credentials');
$content = $connection->get('account/rate_limit_status');
echo "Current API hits remaining: {$content->remaining_hits}.";
$timeline = $connection->get('statuses/friends_timeline');
// Load results from twitter
/*foreach($timeline as $tweet)
{
echo '<div>';
echo $tweet->text;
echo '</div>';
}
*/
echo '<pre>';
print_r($timeline);
echo '</pre>';
?>
require_once 'twitteroauth.php';
$consumerKey = 'key';
$consumerSecret = 'secret';
$oauthToken = 'token';
$oauthSecret = 'tokensecret';
$connection = new TwitterOAuth($consumerKey, $consumerSecret, $oauthToken, $oauthSecret);
$content = $connection->get('account/verify_credentials');
$content = $connection->get('account/rate_limit_status');
echo "Current API hits remaining: {$content->remaining_hits}.";
$timeline = $connection->get('statuses/friends_timeline');
// Load results from twitter
/*foreach($timeline as $tweet)
{
echo '<div>';
echo $tweet->text;
echo '</div>';
}
*/
echo '<pre>';
print_r($timeline);
echo '</pre>';
?>
Aan deze techniek zit echter een nadeel. Hij maakt 2x een API call, en je mag er maximaal 175 per uur, dus hij kan slechts getoond worden aan 87 bezoekers per uur.
Ikzelf heb hiervoor de oplossing gevonden door de tweets in de database op te slaan, en per minuut te checken op updates. zijn er geen updates, dan de "oude" tweets inladen vanaf de database, zijn er nieuwe, eerst de database updaten en de nieuwe resultaten laten zien. zodoende doe ik maar 60 calls per uur. Mocht het per ongeluk fout gaan doordat er 2 personen tegelijk op de website landen, is er een reserve van 17 calls per uur, dus dat moet haalbaar zijn.
Overigens, voor de feeds waar geen authenticatie voor nodig is zoals de user_timeline en de public_timeline, kan je mijn script (dat hier te vinden is) gewoon gebruiken, de cURL wijze van de XML feeds opvragen blijft namelijk wel gewoon bestaan aangezien oAuth hier ook gewoon nog gebruik van maakt, echter alleen de authenticatievorm is anders.
Bedankt voor je hulp Noppes, ik hoop dat anderen iets aan deze post hebben!
Gewijzigd op 27/06/2010 11:35:36 door Justin S