0

私は自分の fb アプリを実装していますが、それは独自の fb ファンページに接続されています。ユーザー名、ID などのユーザー情報を取得する必要がありますが、「Facebook 認証」リンクをクリックすると、空白のページが表示されますか? ここで私のコードを表示できます: http://codepad.org/f0Tuh63v

 error_reporting(E_ALL);
 ini_set('display_errors', true);

 require 'facebook/facebook.php';

   $facebook = new Facebook(array(
 'appId'  => '1',
 'secret' => '2',
));


// See if there is a user from a cookie
 $user = $facebook->getUser();

if ($user) {
  try {
   // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
   print_r($user_profile);
   } catch (FacebookApiException $e) {
   echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
   $user = null;
 }
}
else{
$loginUrl = $facebook->getLoginUrl(
        array('scope' => 'user_about_me,user_birthday,email,publish_actions,offline_access,user_hometown,user_location',
              'redirect_uri' => "https://domain.net/intro.php"
        )
); // end of array

}
?>
 <!DOCTYPE html>
  <html xmlns:fb="http://www.facebook.com/2008/fbml">
  <body>
    <?php if ($user) { ?>
      Your user profile is
     <pre>
        <?php print htmlspecialchars(print_r($user_profile, true)) ?>
     </pre>
   <?php } else { ?>

  <a href="<?php echo $loginUrl; ?>">Facebook authenticate</a>
    <?php } ?>
   <div id="fb-root"></div>
   <script>
     window.fbAsyncInit = function() {
       FB.init({
        appId: '<?php echo $facebook->getAppID() ?>',
        cookie: true,
        xfbml: true,
        oauth: true,
      status: true
    });
    FB.Event.subscribe('auth.login', function(response) {
      //window.location.reload();
    });
    FB.Event.subscribe('auth.logout', function(response) {
      //window.location.reload();
    });
  };
  (function() {
    var e = document.createElement('script'); e.async = true;
    e.src = document.location.protocol +
      '//connect.facebook.net/en_US/all.js';
    document.getElementById('fb-root').appendChild(e);
  }());
</script>
   </body>
  </html>

ここにもありますhttp://codepad.org/f0Tuh63v 何が間違っているのですか?

また、phpsdk または js sdk を使用せずに FB ユーザー ID を取得する方法はありますか? または、これらのプラグインを使用する必要がありますか?

4

1 に答える 1

0

コードの何が問題なのかわかりません。ただし、Javascript を使用している場合は、認証を取得してから必要な情報を取得するための代替方法をお伝えできます。

ボタンの背後にある次のコードを使用して、Facebook アプリを認証し、ユーザーを Web サイトにリダイレクトしました。それは私のために働いた。

<a class="fb-login-button" align="center" target="_blank" href="https://www.facebook.com/dialog/oauth?client_id=CLIENT_ID&response_type=token&scope=PERMISSION_1,PERMISSION_2&redirect_uri=YOUR_WEBSITE"> TEXT </a>

次に、リダイレクトされた URL で返されたトークンを抽出しました。

var url_t; // Get the redirected URL.
access_token = url_t.split('=')[1].split('&')[0];

次に、アクセス トークンを使用して、必要なデータを取得するための HTTP 要求を送信しました。facebook が提供する GRAPH API を使用しました。例: ユーザーの名を取得する場合:

var xhr = new XMLHttpRequest(); 
var f_url_new = "https://graph.facebook.com/fql?q=SELECT%20name%20FROM%20user%20WHERE%20uid%20=%20me()&access_token=" + access_token;
xhr.open("GET", f_url_new , true);
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
        obj1 = JSON.parse(xhr.responseText);
        var str = obj1.data[0].name.toString();
        var n=str.split(" ");
        document.getElementById("name").innerText = n[0];
    }
}
xhr.send();

代替案に関するアイデアが得られることを願っています。これはあなたの質問に対する正しい答えではありませんが、思考プロセスに役立ちます。

于 2013-02-21T00:30:38.600 に答える