Listing 1 $this->provider = new OAuthProvider(); // Namen der Callback-Funktionen: $this->provider->consumerHandler(array($this,'lookupConsumer')); $this->provider->timestampNonceHandler(array($this,'timestampNonceChecker')); $this->provider->tokenHandler(array($this,'tokenHandler')); // URL, die ohne Token Credentials aufgerufen werden kann, // um die Token Credentials anzuforndern: $this->provider->setRequestTokenPath('/pfad/zu/request_token'); // Prüfen, ob der Request gültig ist: $this->provider->checkOAuthRequest(); // Listing 1 Listing 2 public function lookupConsumer($provider) { // 1. Consumer Secret z.B. aus der Datenbank holen // Vorsicht: SQL-Injection-Gefahr! $consumer_key = $provider->consumer_key; $sql = 'SELECT consumer_secret FROM oauth_consumers WHERE consumer_key ='.$consumer_key; $consumer_secret = [Ergebnis der SQL-Abfrage] // 2. Consumer Secret prüfen: if($provider->consumer_secret == $consumer_secret) { return OAUTH_OK; } else { return OAUTH_CONSUMER_KEY_UNKNOWN; } } // Listing 2 Listing 3 // Da Token und Secret Binärdaten sind, müssen sie z.B. in Hex umgewandelt // oder URL-kodiert werden: $request_token = bin2hex($this->provider->generateToken(4)); $request_token_secret = bin2hex($this->provider->generateToken(12)); // Request Token und Secret müssen z.B. in der Datenbank gespeichert werden … // Jetzt muss der URL zum Autorisieren erzeugt und ausgegeben werden: echo 'login_url=http://webanwendung.example/autorisierung.php?request_token='.$request_token.'&request_token_secret='.$request_token_secret.'&oauth_callback_confirmed=true'; // Listing 3 Listing 4 // Da Token und Secret Binärdaten sind, müssen sie z.B. in Hex umgewandelt // oder URL-kodiert werden: $access_token = bin2hex($this->provider->generateToken(8)); $access_token_secret = bin2hex($this->provider->generateToken(16)); // Jetzt muss aus der Tabelle mit den Temporary Credentials die Zeile mit dem // übergebenen Request Token und Verification Code geholt werden. // Aus dieser Zeile wird die Benutzer-ID benötigt, und durch die AND-Verknüpfung // wird gleichzeitig geprüft, ob der Prüfcode korrekt ist // Auch hier gilt wieder: Vorsicht, SQL-Injection-Gefahr! $sql = 'SELECT * FROM outh_request_tokens WHERE request_token = '.$request_token.' AND verifier = '.$verifier; ... // Danach kann diese Zeile gelöscht werden, da sie nicht mehr benötigt wird ... // Jetzt können die neuen Token Credentials (Access Token und Access Secret) // zusammen mit der zugehörigen Benutzer-ID gespeichert werden $sql = 'INSERT INTO oauth_access_tokens SET access_token = '.$access_token . ', access_token_secret = '.$access_token_secret . ', consumer_key = '.$consumer_key ' . ', user_id = '.$user_id'; ... // Jetzt müssen dem Consumer noch die Token Credentials mitgeteilt werden: echo "oauth_token=".$access_token.'&oauth_token_secret='.$access_token_secret; // Listing 4 Listing 5 public function tokenHandler($provider) { $this->token = [Abfrage der zu $provider->token gehörenden Zeile aus der DB]; if(!$this->token->loaded) { return OAUTH_TOKEN_REJECTED; } else if($this->token->type==1 && $this->token->state==1) { return OAUTH_TOKEN_REVOKED; } else if($this->token->type==0 && $this->token->state==2) { return OAUTH_TOKEN_USED; } else if($this->token->type==0 && $this->token->verifier != $provider->verifier) { return OAUTH_VERIFIER_INVALID; } if ($provider->token_secret = $this->token->secret) { return OAUTH_OK; } } // Listing 5 Seite 3, Druckdatum: 10.11.2011, 10:41 Uhr