2009-06-05 12 views
2

J'essaie d'implémenter Google Friend Connect en tant que solution de connexion. J'ai implémenté Facebook Connect en utilisant le client PHP, et j'aimerais utiliser la même approche pour Google Friend Connect (OpenSocial), en utilisant la bibliothèque cliente OpenSocial PHP (http://code.google.com/p/opensocial-php-client/). Une fois l'utilisateur connecté, j'aimerais obtenir son identifiant OpenSocial et l'enregistrer dans la base de données.Google Friend Connect Client PHP OpenSocial

Voici le code à ce jour:

$gfc_provider = new osapiFriendConnectProvider(); 
$gfc_auth = new osapiOAuth2Legged(GFCAPIKEY, GFCSECRET); 
$gfc_osapi = new osapi($gfc_provider, $gfc_auth); 
$batch = $gfc_osapi->newBatch(); 
$batch->add($gfc_osapi->people->get(array('userId' => '@me'))); 
$result = $batch->execute(); 
print_r($result); 

est ici la réponse:

Array (
[0] => osapiError Object (
[errorCode:private] => 400 
[errorMessage:private] => 
    Cannot ask for me when anonymous 
    Error 400 
[response] => 
) 
) 

Je ne sais pas ce que je fais mal. Aucune suggestion?

Répondre

3

Pour ceux qui cherchent à utiliser Google Friend Connect de la même manière que vous pouvez utiliser Facebook Connect, voici comment je l'ai eu fait (avec l'aide d'Arne). J'ai inclus Facebook Connect comparaisons:

Facebook (PHP):

$facebook = new Facebook(FBAPIKEY, FBSECRET); 
$facebook_id = $facebook->get_loggedin_user(); 

Google Friend Connect (PHP):

if ($_COOKIE["fcauth" . GFCSITEID] != ''){ 
    $gfc_provider = new osapiFriendConnectProvider(); 
    $gfc_auth = new osapiFCAuth($_COOKIE["fcauth" . GFCSITEID]); 
    $gfc_osapi = new osapi($gfc_provider, $gfc_auth); 
    $batch = $gfc_osapi->newBatch(); 
    $batch->add($gfc_osapi->people->get(array('userId' => '@me'))); 
    $result = $batch->execute(); 
    $opensocial_id = $result[0]['data']->id; 
} 

(S'il vous plaît noter que vous avez besoin des fichiers mis à jour, à condition par Arne à partir du lien ci-dessus, d'utiliser l'objet osapiFCAuth)

Facebook (JavaScript):

FB.init("XXXXXXXXXXXXXXXXXXXXXXX", "xd_receiver.htm", {"reloadIfSessionStateChanged":true}); 

Google Friend Connect (JavaScript):

google.friendconnect.container.setParentUrl('/'); 
google.friendconnect.container.initOpenSocialApi({ 
    site: 'XXXXXXXXXXXXXXXXXXXXX', 
    onload: function(securityToken) { 
     var req = opensocial.newDataRequest(); 
     req.add(req.newFetchPersonRequest('VIEWER'), "viewer"); 
     req.send(function(response) { 
      var data = response.get('viewer').getData(); 
      if (data){ 
       var opensocial_id = data.getId(); 
       if (opensocial_id && $("div#gfc").length > 0) window.location.reload(); 
      } 
     }); 
    } 
}); 
if ($('div#gfc').length > 0) google.friendconnect.renderSignInButton({'id':'gfc', 'text':'Connect with Google', 'style':'long'}); 

Facebook (HTML):

Google Friend Connect (HTML):

<div id="gfc"></div> 
Questions connexes