2012-03-19 13 views
-2

私はこれらの2つのSDKを組み合わせようとしました。これを行うために、私はこのコードを作成しました:Facebook Connect - JavaScriptとPHP SDK

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
     <title>New JavaScript SDK & OAuth 2.0 based FBConnect Tutorial | Thinkdiff.net</title> 
     <!-- 
      @author: Mahmud Ahsan (http://mahmud.thinkdiff.net) 
     --> 
    </head> 
    <body> 
     <div id="fb-root"></div> 
     <script type="text/javascript"> 
      var button; 
      var userInfo; 

      window.fbAsyncInit = function() { 
       FB.init({ appId: 'xxxxxxxxxx', //change the appId to your appId 
        status: true, 
        cookie: true, 
        xfbml: true, 
        oauth: true}); 
       showLoader(true); 

     </script> 

     <body> 
      <?php 
       $cookie = preg_replace("/^\"|\"$/i", "", $_COOKIE['fbs_' . "203222769784206"]); 
       parse_str($cookie, $data); 

       $fb = new Facebook(array(
        'appId' => "xxxx", 
        'secret' => "xxxxxx" 
       )); 
       $fb->setAccessToken($data['access_token']); 
       var_dump($fb->getUser()); 
      ?> 
    </body> 
</html> 

ただし、int(0)を出力します。何が問題なのでしょうか?どこが間違っていますか?アクセストークンに問題はありますか?

答えて

0

このコードは機能しません。ここに問題があります - PHPコードはサーバー側で実行され、JS/HTMLコードはブラウザ上で実行されます。あなたは、ページがロードされて実行された後にのみ起こる何かに依存するPHPサーバー側のコードを実行しています。 Cookieが設定されている可能性があるため、次のページビューを処理できる可能性があります。

また、ユーザーがアプリを承認するまで、access_tokenは設定されないことがあります。あなたはそれをチェックしましたか?

つまり、これはユーザーのデータを取得するための非常に貧弱な方法です。 FBによって設定されたCookieを解析することは、FBをサポートする方法ではなく、APIの利用規約に違反する可能性があります。

標準JS-SDK FB.Login()を使用してユーザーをログインし、access_tokenを取得してサーバーに送信し、サーバー側でデータを取得する必要があります。