2010-09-30 21 views
0

Salut je essaie de poster des tweets en utilisant OAuth (PHP)twitter OAuth: geting Undefined index: oauth_token_secret dans

j'ai créé l'application dans mon compte twitter,

i exécuté un script open source, mais qui produisent la ci-dessous erreur,

Notice: Undefined index: oauth_token_secret in 

Comment résoudre ce problème

mon extrait

require_once('twitterOAuth/twitterOAuth.php'); 
require_once('twitterOAuth/OAuth.php'); 


$consumer_key='q3fsdfsdfsdw'; 
$consumer_secret='rfsdfsdfsdfsdfdsfsdL'; 
$request_token='http://twitter.com/oauth/request_token'; 
$request_token_secret='5454545'; 
$oauth = new TwitterOAuth($consumer_key, $consumer_secret, 
$request_token, $request_token_secret); 

// Ask Twitter for an access token (and an access token secret) 
$request = $oauth->getAccessToken(); 

$access_token = $request['amp;oauth_token']; 
$access_token_secret = $request['oauth_token_secret'];=======> HERE AM GETTING TROUBLE 

function getAccessToken($token = NULL, $pin = NULL) 
{ 
    if ($pin) 
     $r = $this->oAuthRequest($this->accessTokenURL(), 
      array("oauth_verifier" => $pin)); 
    else 
     $r = $this->oAuthRequest($this->accessTokenURL()); 

    $token = $this->oAuthParseResponse($r); 
    $this->token = new OAuthConsumer($token['oauth_token'], 
     $token['oauth_token_secret']); 

    return $token; 
} 

Mon erreur complète ici

Notice: Undefined index: oauth_token_secret in E:\wamp\www\source\oauth\twitterOAuth\twitteroauth.php on line 118 

Notice: Undefined index: oauth_token_secret in E:\wamp\www\source\oauth\bharani.php on line 18 
+0

Vous n'avez pas besoin du 'require_once ('twitterOAuth/OAuth.php');' comme requis par twitteroauth.php. Est-ce que http://twitter.com/oauth/request_token correspond à votre valeur réelle pour $ request_token? – abraham

+0

Je viens de commenter la ligne require_once('twitterOAuth/OAuth.php');, je reçois toujours la même erreur, que dois-je faire ensuite – Bharanikumar

+0

Demande jetons/secrets sont des jetons à usage unique, donc ils ne devraient pas être codés en dur dans votre code. – abraham

Répondre

-1

Il a juste un avis.

Vous n'avez pas défini cet index de tableau ou quelque chose. Collez votre erreur complète et les lignes autour de l'endroit où php écrit cet avis.

Une autre façon: Vous pouvez désactiver ce code:

// Report all errors except E_NOTICE 
// This is the default value set in php.ini 
error_reporting(E_ALL^E_NOTICE); 

http://www.php.net/manual/en/function.error-reporting.php

+0

plz solution de mise à jour – Bharanikumar

+0

Je pense que vous n'obtenez pas oauth_token_secret dans la réponse de Twitter. Jetez un coup d'œil aux suggestions de John Misoskian, peut-être que certaines extensions ne sont pas installées dans votre php ou peut-être que Twitter donne des informations d'erreur pour votre demande, que vous pouvez obtenir à partir de votre classe Twitter. –

+0

Essayez d'imprimer_r ($ oauth); après cet appel: $ oauth-> getAccessToken(); Peut-être que vous verrez quelques erreurs dans la réponse de Twitter. –

1

S'il vous plaît vérifier php companents:

  • Curl SSL
  • Open SSL
  • hash_hmac
1

@Bharanikumar
FIRT vous devez AFAIK appeler la fonction

$request_token = $oauth->getRequestToken(); 

alors u obtiendrez

$request_token['oauth_token']; and $request_token['oauth_token_secret']; 

puis faites ci-dessous

$URL = $oauth->getAuthorizeURL($request_token); 

$oauth = new TwitterOAuth('YOUR_CONSUMER_KEY', 'YOUR_CONSUMER_SECRET', $request_token['oauth_token'],$request_token['oauth_token_secret']); 

$access = $oauth->getAccessToken(NULL, $_GET['pin']); 
$accessToken = $access ['oauth_token']; 
$accessTokenSecret = $access ['oauth_token_secret']; 

& puis appliquez votre code

if ($pin) 

Espérons que cela vous aidera ..

+0

Cela m'a aidé :) – Tarik

2

J'ai eu la même erreur:

Notice: Undefined index: oauth_token in /web/htdocs/www.xxx.com/home/private/libraries> /twitteroauth/twitteroauth.php on line 118

Notice: Undefined index: oauth_token_secret in /web/htdocs/www.xxx.com/home/private/libraries/twitteroauth/twitteroauth.php on line 118

Debugging en ligne ce que l'erreur spécifiée:

function getAccessToken($oauth_verifier = FALSE) { 
    // .... code .... // 

    $token = OAuthUtil::parse_parameters($request); 
    $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']); 
    exit(print_r($token)); 

    // ... code ....// 
} 

J'ai trouvé ceci:

Array ([ "1.0" encoding="UTF-8"?> Required oauth_verifier parameter not provided /oauth/access_token .......

Après avoir lu une question sur le web et trouver la solution. Dans mon code, je dois passer un oauth_verifier:

$request = $oauth->getAccessToken($_GET['oauth_verifier']); 

espoir que j'aider quelqu'un, le problème est que pour OAuth 1.0a conformité « oauth_verifier » est nécessaire!

ressources: https://dev.twitter.com/discussions/16443#comment-36618

Apologize pour mauvais anglais.

+0

Fonctionne parfaitement! Merci beaucoup. – snowflake

+0

Maintenant, Twitter passer à la nouvelle version de l'API v.1.1 Vue d'ensemble: https://dev.twitter.com/docs/api/1.1/overview, FAQ: https://dev.twitter.com/docs/faq#rest- api-v11 –

0

Ce problème a été résolu pour moi en définissant une URL de rappel dans les paramètres de mon application Twitter. http://dev.twitter.com

0

Je suis même ce bug. Parce que je n'ai pas configuré OAUTH_CALLBACK. J'espère que cela vous sera utile.

3

Dans votre application twitter paramètre "Callback URL", ajoutez une URL de rappel, par ex:
https://dev.twitter.com/

Sinon twitter examinera votre application comme application de bureau et vous obtiendrez l'erreur:

Desktop applications only support the oauth_callback value 'oob' 

et votre script php donnera des erreurs comme:

Notice: Undefined index: oauth_token in twitteroauth.php on line 80 

Mais en fixant un callback url du script php il remplacera l'espace réservé par défaut de callback url et considérera votre application comme une application Web.

+0

Merci, cela m'a juste sauvé beaucoup d'ennuis. –