Probleem met oAuth Twitter
Hij geeft telkens een 401, unauthorized melding. Ik kan echter niks fouts ontdekken. Mijn consumer Key en consumer secret zijn evenals de tokens niet veranderd.
Noot: ik werk met vaste tokens omdat er alleen opgehaald wordt. Niet gepost, dus alleen de applicatie heeft toegang tot Twitter.
Iemand hetzelfde? Of weet iemand een oplossing? Ik heb het idee dat de signature niet in orde is maar geen idee wat ik eraan kan doen.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
include_once 'twitteroauth.php';
include_once '../../plugins/plugin.database.php';
// Get last update
$checkLastUpdate = $db->query('SELECT id, lastupdate FROM twitterUpdate WHERE lastupdate BETWEEN NOW() - INTERVAL 1 MINUTE AND NOW()');
if($checkLastUpdate->rowCount() == 0)
{
// Get last tweet
$selectLastTweet = $db->query('SELECT tweetID FROM twitterTweets ORDER BY created DESC LIMIT 0,1');
$getCount = $selectLastTweet->rowCount();
while($row = $selectLastTweet->fetch(PDO::FETCH_ASSOC)) $tweetID = $row['tweetID'];
// Set Twitter values
$consumerKey = 'xxxxxx';
$consumerSecret = 'xxxxxx';
$oauthToken = 'xxxxxx';
$oauthSecret = 'xxxxxx';
// Make connection to Twitter
$connection = new TwitterOAuth($consumerKey, $consumerSecret, $oauthToken, $oauthSecret);
$content = $connection->get('1/account/verify_credentials');
$timeline = $connection->get('1/statuses/home_timeline');
$http_code = $connection->http_code;
if($http_code == 200)
{
// Build transition
$i = 0;
$db->beginTransaction();
// Loop through tweets
foreach($timeline as $tweet)
{
if($tweetID == $tweet->id) break;
$db->exec('INSERT INTO twitterTweets VALUES("", "'.strip_tags($tweet->source).'",
"'.date('Y-m-d H:i:s', strtotime($tweet->created_at)).'", "'.$tweet->id.'",
"'.$tweet->user->screen_name.'", "'.$tweet->user->name.'",
"'.$tweet->user->profile_image_url.'", "'.htmlentities($tweet->text).'")');
if(++$i == 5) break;
}
// Execute transaction
$db->commit();
$db->query('INSERT INTO twitterUpdate VALUES("", NOW())');
}
else
{
echo '<div class="error">';
switch($http_code)
{
case 400:
echo 'Foutcode 400: Bad Request, Twitter service is momenteel onbereikbaar.';
break;
case 401:
echo 'Foutcode 401: Unauthorized, u bent niet gemachtigd om deze bewerking uit te voeren.';
break;
case 500:
echo 'Foutcode 500: Internal Server Error, Twitter service is momenteel onbereikbaar.';
break;
case 502:
echo 'Foutcode 502: Bad Gateway, Twitter is momenteel onbereikbaar of overbezet.';
break;
case 503:
echo 'Foutcode 503: Service Unavailible, Twitter is over capacity';
break;
}
echo '</div>';
}
}
// Print the last 5 tweets in database
$selectTweets = $db->query('SELECT source, created, username, name, imageUrl, text FROM twitterTweets ORDER BY created DESC LIMIT 0,5');
while($row = $selectTweets->fetch(PDO::FETCH_ASSOC))
{
echo ' <div class="tweet">
<div class="content">
<a href="http://twitter.com/'.$row['username'].'" class="username">'.$row['username'].'</a>
'.displayLinks(html_entity_decode($row['text'])).'
</div>
<div class="bottom">
'.displayTimeAgo(strtotime($row['created'])).' via '.$row['source'].'
</div>
</div>';
}
?>
ini_set('display_errors', 1);
error_reporting(E_ALL);
include_once 'twitteroauth.php';
include_once '../../plugins/plugin.database.php';
// Get last update
$checkLastUpdate = $db->query('SELECT id, lastupdate FROM twitterUpdate WHERE lastupdate BETWEEN NOW() - INTERVAL 1 MINUTE AND NOW()');
if($checkLastUpdate->rowCount() == 0)
{
// Get last tweet
$selectLastTweet = $db->query('SELECT tweetID FROM twitterTweets ORDER BY created DESC LIMIT 0,1');
$getCount = $selectLastTweet->rowCount();
while($row = $selectLastTweet->fetch(PDO::FETCH_ASSOC)) $tweetID = $row['tweetID'];
// Set Twitter values
$consumerKey = 'xxxxxx';
$consumerSecret = 'xxxxxx';
$oauthToken = 'xxxxxx';
$oauthSecret = 'xxxxxx';
// Make connection to Twitter
$connection = new TwitterOAuth($consumerKey, $consumerSecret, $oauthToken, $oauthSecret);
$content = $connection->get('1/account/verify_credentials');
$timeline = $connection->get('1/statuses/home_timeline');
$http_code = $connection->http_code;
if($http_code == 200)
{
// Build transition
$i = 0;
$db->beginTransaction();
// Loop through tweets
foreach($timeline as $tweet)
{
if($tweetID == $tweet->id) break;
$db->exec('INSERT INTO twitterTweets VALUES("", "'.strip_tags($tweet->source).'",
"'.date('Y-m-d H:i:s', strtotime($tweet->created_at)).'", "'.$tweet->id.'",
"'.$tweet->user->screen_name.'", "'.$tweet->user->name.'",
"'.$tweet->user->profile_image_url.'", "'.htmlentities($tweet->text).'")');
if(++$i == 5) break;
}
// Execute transaction
$db->commit();
$db->query('INSERT INTO twitterUpdate VALUES("", NOW())');
}
else
{
echo '<div class="error">';
switch($http_code)
{
case 400:
echo 'Foutcode 400: Bad Request, Twitter service is momenteel onbereikbaar.';
break;
case 401:
echo 'Foutcode 401: Unauthorized, u bent niet gemachtigd om deze bewerking uit te voeren.';
break;
case 500:
echo 'Foutcode 500: Internal Server Error, Twitter service is momenteel onbereikbaar.';
break;
case 502:
echo 'Foutcode 502: Bad Gateway, Twitter is momenteel onbereikbaar of overbezet.';
break;
case 503:
echo 'Foutcode 503: Service Unavailible, Twitter is over capacity';
break;
}
echo '</div>';
}
}
// Print the last 5 tweets in database
$selectTweets = $db->query('SELECT source, created, username, name, imageUrl, text FROM twitterTweets ORDER BY created DESC LIMIT 0,5');
while($row = $selectTweets->fetch(PDO::FETCH_ASSOC))
{
echo ' <div class="tweet">
<div class="content">
<a href="http://twitter.com/'.$row['username'].'" class="username">'.$row['username'].'</a>
'.displayLinks(html_entity_decode($row['text'])).'
</div>
<div class="bottom">
'.displayTimeAgo(strtotime($row['created'])).' via '.$row['source'].'
</div>
</div>';
}
?>
Gewijzigd op 13/11/2010 13:59:01 door Justin S
http://getsatisfaction.com/twitterfeed/topics/twitter_account_authenticated_but_still_says_401_unauthorized
Ziet eruit als een probleem met OAuth, aangezien ook andere libraries hetzelfde probleem kennen: http://stackoverflow.com/questions/1280295/keep-getting-oauthunauthorized-error-when-using-oauth-and-twitter-ruby-gems
Wat daar alleen het geval is, is dat ze refereren aan het terugvallen op de cURL authenticatie methode die toen nog wel werkte. Nu kan dat dus niet meer omdat Twitter heeft besloten deze te laten vervallen..
wat is:
Code (php)
1
2
3
4
5
2
3
4
5
// Set Twitter values
$consumerKey = 'xxxxxx';
$consumerSecret = 'xxxxxx';
$oauthToken = 'xxxxxx';
$oauthSecret = 'xxxxxx';
$consumerKey = 'xxxxxx';
$consumerSecret = 'xxxxxx';
$oauthToken = 'xxxxxx';
$oauthSecret = 'xxxxxx';
heb je codes nodig voor twitter api?
Ik heb ze hier uitgehaald aangezien niet iedereen mijn API key mag misbruiken ;-)
http://www.gerhardlubbers.com was wel een grappig projectje op je eigen tweets te displayen ;)
haha oke, weer wat geleerd. ik had ergens een code weggehaald die tweets van twitter afhaalde maar daar had ik dat in ieder geval niet voor nodig. kijk maar eens op Hoe haal je die tweets op dan? Met cURL?
Ik zal het morgen even bekijken, heb het een poosje geleden gebruikt, maar ben nu niet thuis. Misschien dat ik er wel een tut over maak, anders pm ik je nog wel even oke