Probleem met oAuth Twitter

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Justin S

Justin S

13/11/2010 13:58:35
Quote Anchor link
Ik heb sinds enkele dagen problemen met mijn twitter app die ik voor bijna elke site gebruik (zie onderstaande code).
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>'
;
        }


?>
Gewijzigd op 13/11/2010 13:59:01 door Justin S
 
PHP hulp

PHP hulp

27/11/2024 03:58:54
 
The Force

The Force

13/11/2010 14:14:36
Quote Anchor link
Je bent niet de enige die opeens met dit probleem te maken heeft gekregen:

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
 
Justin S

Justin S

13/11/2010 14:45:57
Quote Anchor link
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..
 
Gerhard l

gerhard l

15/11/2010 22:17:36
Quote Anchor link
heb geen oplossing voor je sorry, puur uit nieuwschierigheid.
wat is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
// Set Twitter values
            $consumerKey    =    'xxxxxx';
            $consumerSecret    =    'xxxxxx';
            $oauthToken        =    'xxxxxx';
            $oauthSecret        =    'xxxxxx';

heb je codes nodig voor twitter api?
 
Justin S

Justin S

15/11/2010 22:21:05
Quote Anchor link
Ja, die krijg je als je je aanmeld voor de API.
Ik heb ze hier uitgehaald aangezien niet iedereen mijn API key mag misbruiken ;-)
 
Gerhard l

gerhard l

15/11/2010 22:27:19
Quote Anchor link
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 http://www.gerhardlubbers.com was wel een grappig projectje op je eigen tweets te displayen ;)
 
Justin S

Justin S

15/11/2010 22:40:03
Quote Anchor link
Hoe haal je die tweets op dan? Met cURL?
 
Gerhard l

gerhard l

15/11/2010 22:46:08
Quote Anchor link
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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.