2010-08-24 3 views
2

J'ai suivi les instructions sur http://developers.facebook.com/docs/api#authorization en utilisant la bibliothèque PHP standard. Tout fonctionne bien jusqu'à ce qu'il redirige vers mon site. Je ne suis pas sûr de ce que je suis censé faire ici! Lorsque la redirection se produit, je peux voir la clé facebook parle de ce que j'utilise pour demander un jeton OAuth dans l'URL.Je suis confus au sujet du processus OAuth/Facebook

Cependant qu'est-ce que je suis censé faire avec ceci? Est-ce que j'écris un script simple qui prend la nouvelle valeur de 'code' et place une demande sur la page facebook avec celle incluse dans les détails? Est-ce qu'il n'y a aucun appel dans la bibliothèque de php pour faire tout ce processus pour moi?

Toute aide appréciée.

Répondre

5

Voilà comment le code semble dans ma demande (simplifiée pour cet exemple)

$code = $_REQUEST['code']; 
if ($code) 
{ 
    $response = $facebook->api('/oauth/access_token', 'GET', array(
     'client_id'  => $facebook->getAppId() 
    , 'client_secret' => $facebook->getApiSecret() 
    , 'redirect_uri' => 'http://example.com/your/redirect/uri' 
    , 'code'   => $code 
)); 
    parse_str($response, $vars); 
    $oauthToken = $vars['access_token']; 

    // Persist this token in the session, DB, or wherever you want 

} else { 
    switch ($_REQUEST['error_reason']) 
    { 
    case 'user_denied': 
     // some sort of message here 
     break; 
    } 
} 

Si, comme moi, vous avez créé une sous-classe de Facebook, il suffit de mettre un peu de ce qui précède dans une nouvelle méthode

/** 
* Exchange an Access Code for an OAuth Token 
* 
* @param string $accessCode 
* @param string $redirectUrl 
* 
* @return string OAuth Token 
*/ 
public function getOauthTokenFromAccessCode($accessCode, $redirectUrl) 
{ 
    $response = $this->api('/oauth/access_token', 'GET', array(
     'client_id'  => $this->getAppId() 
    , 'client_secret' => $this->getApiSecret() 
    , 'redirect_uri' => $redirectUrl 
    , 'code'   => $accessCode 
)); 
    parse_str($response, $vars); 
    return $vars['access_token']; 
} 

ce qui simplifie le code client à ce

$code = $_REQUEST['code']; 
if ($code) 
{ 
    $oauthToken = $facebook->getOauthTokenFromAccessCode(
     $code 
    , 'http://example.com/your/redirect/uri' 
); 

    // Persist this token in the session, DB, or wherever you want 

} else { 
    switch ($_REQUEST['error_reason']) 
    { 
    case 'user_denied': 
     // some sort of message here 
     break; 
    } 
} 
+2

Qu'est-ce que ... $ code = $ _REQUEST ['code']; – Bharath

Questions connexes