2009-06-05 19 views
2

Google Friend Connectをサインインソリューションとして実装しようとしています。私はPHPクライアントを使用してFacebook Connectを実装しましたが、OpenSocial PHPクライアントライブラリ(http://code.google.com/p/opensocial-php-client/)を使用してGoogle Friend Connect(OpenSocial)に同じアプローチを使用したいと思います。ユーザーが接続したら、OpenSocial IDを取得してデータベースに記録したいと思います。Google Friend Connect OpenSocial PHPクライアント

は、ここでのコードは、これまでです:

$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); 

ここでの応答です:

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

私は私が間違ってやっていることを確認していません。助言がありますか?

答えて

3

に移動した、ここで私はそれを得た方法であります完了(Arneの助けを借りて)。私はFacebookの接続の比較を含めました:

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; 
} 

(注意してください、あなたが更新されたファイルを必要とすることを、提供します上記のリンクからArneさんがosapiFCAuthオブジェクトを使用しています)

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> 
関連する問題