6
votes

Accéder à l'API Twitter via PHP

Je travaille à la fabrication de mon maille de script avec OAuth au lieu de l'authentification de base, et je suis coincé. Jusqu'à présent, je travaille juste sur l'authentification pour le moment, mais je ne peux pas obtenir cela fonctionne. Ce code:

 function getAccessToken($oauth_verifier = FALSE) {
    $parameters = array();
    if (!empty($oauth_verifier)) {
      $parameters['oauth_verifier'] = $oauth_verifier;
    }
    $request = $this->oAuthRequest($this->accessTokenURL(), 'GET', $parameters);
    $token = OAuthUtil::parse_parameters($request);
    $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
    return $token;
  }


7 commentaires

Pouvez-vous poster la source de fonction getAccessToken () ??


La bibliothèque API que j'ai utilisée était Abraham, le premier lien sous PHP dans la section Bibliothèques du Twitter API Wiki. Je n'ai pas écrit cette fonction moi-même, désolé.


Buuuut je l'ai mis de toute façon. 99 & Sure c'est Open Source.


Pouvez-vous vérifier le contenu de ces variables de session?


+1 Je vais lui donner un coup et mettre à jour ce qui se pose.


Donc, j'essaie de, mais echo $ _session ['oauth_token']; ne délivre rien de l'écran Tothe. Je n'étais pas sûr de quoi m'attendre, mais j'espérais plus que je ne l'ai eu. ;)


Il semble qu'il n'y ait rien dans l'une ou l'autre des variables. Est-ce que cela vous donne un indice? Je saisis aux pailles, ici, haha.


3 Réponses :


0
votes

Vérifiez que consommateur_key et consommateur_secret sont les mêmes que les valeurs de votre page d'application sur Twitter.

Quelle est l'URL d'autorisation renvoyée de la méthode?


0 commentaires

0
votes

J'ai utilisé cette API et cela a fonctionné bien pour moi. Rien d'autre ne vient à l'esprit sauf vraiment vérifier que Consumer_Key et Consumer_Secret, comme l'a dit Ian Quigley Parce que vous dites que votre _session est vide ['oauth_token'] est vide, et cela ne devrait pas être. La raison pour laquelle sa vide pourrait être les mauvaises valeurs dans le consommateur_key et le consommateur_secret Si vous envoyez de mauvaises clés à Twitter, il ne vous donne pas ces variables de session dont vous avez besoin

Vérifiez simplement si ces valeurs dans https://twitter.com/apps (vos données d'application) et dans Config.PHP Fichier est identique. Par défaut, config.php contient des valeurs incorrectes, vous devez remplir votre propre.


0 commentaires

1
votes

J'ai utilisé cette API pour une authentification OAuth basée sur des broches pour Twitter. J'ai utilisé PHP Simple OAuth Library http://php.net/manual/fr/book. oauth.php .

Voici le code si vous voulez voir. P>


class TwitterPinBasedOauth{
    private static $requestTokenUrl = 'http://twitter.com/oauth/request_token';
    private static $accessTokenUrl = 'http://twitter.com/oauth/access_token';
    private static $authorizeUrl = 'http://twitter.com/oauth/authorize';
    private static $updateUrl = 'http://twitter.com/statuses/update.json';

    private $twitterOauth;
    public function __construct(){
        $this->twitterOauth = new OAuth(ConsumerToken::$CONSUMER_KEY,
                                        ConsumerToken::$CONSUMER_SECRET,
                                        OAUTH_SIG_METHOD_HMACSHA1,
                                        OAUTH_AUTH_TYPE_AUTHORIZATION);
    }

    public function getAndStoreRequestToken(){
        $callbackUrl = "oob";
        $response = $this->twitterOauth->getRequestToken(self::$requestTokenUrl, $callbackUrl);
        print_r("REQUEST TOKEN:\n");
        print_r($response);
        print_r(PHP_EOL);
        file_put_contents(Constants::$oauth_request_file, serialize($response));
        echo "AUTH URL:\n".self::$authorizeUrl."?oauth_token=".$response['oauth_token'].PHP_EOL;
    }
    public function getAcessToken($pin){
        $request_tokens = unserialize(file_get_contents(Constants::$oauth_request_file));
        $this->twitterOauth->setToken($request_tokens["oauth_token"],$request_tokens["oauth_token_secret"]);
        $response = $this->twitterOauth->getAccessToken(self::$accessTokenUrl, NULL, $pin);

        file_put_contents(Constants::$oauth_access_file, serialize($response));

        print_r("ACESS TOKEN:\n");
        print_r($response);
        print_r(PHP_EOL);
    }
    public function updateStatus($status){
        try{
            $access_tokens = unserialize(file_get_contents(Constants::$oauth_access_file));
            $this->twitterOauth->setToken($access_tokens["oauth_token"],$access_tokens["oauth_token_secret"]);
            $this->twitterOauth->fetch(self::$updateUrl,
                                    array('status' => $status),
                                    OAUTH_HTTP_METHOD_POST);
        }
        catch(OAuthException $e){
            error_log($e->getMessage().PHP_EOL);
            return intval($e->getCode());
        }
   }
} 


0 commentaires