8

質問の仕方がわかりませんでしたが、グラフAPIを使ったプログラムの作り方を自分で学ぼうとしています。私が見たチュートリアルのほとんどは古いものであり、それらが現在どれほど関連性があるかはわかりません。基本的に、私は誰かが私のアプリをクリックする「もの」を取得しようとしています、それは、このアプリはあなたのユーザー名などを必要とし、次に許可または許可しないことを要求します。

情報を取得して、データベースに挿入できるようにします。私はphpを使用していて、ドメインを持っています。

データが取れれば問題なく挿入できます。やり方がわかりません。

漠然とした質問でごめんなさい、検索しました。私のために私のコードを書くように頼むのではなく、正しい方向に私を向けてください。多分私が求めていることをやっている現代のチュートリアルに向けてください。ありがとう。

4

4 に答える 4

15

1)ここからFacebookアプリケーションを作成します。

http://developers.facebook.com/apps

そして、あなたのドメインでそれを構成します。

この手順は非常に簡単です。アプリケーション名となる名前空間を入力し、アプリケーションが「アプリケーションとログインページ」(ファンページなどに関連するものではない)として使用されることを確認し、最後にURLを指定します。 Facebook APIを使用します(Canvas URLは空白のままにします)。

ちょっと注意してください。FacebookAPIにはHTTPSURLが必要だと思いますが、なぜまだHTTPを許可しているのかわからないので、今は心配しないでください。

ログイン設定:

URLを設定します:http://yourdomain.com/

アプリケーション構成:

http://yourdomain.com/myfacebookapp/

したがって、ユーザーが次の場所に移動すると、次のようになります。

http://apps.facebook.com/yourappName

ユーザーが実際に最初のリンクを閲覧していることを意味し、そのページ(たとえばindex.php)では、以下からすべてを実行する必要があります。

参考までに、この時点で、アプリケーションのロゴを設定し、管理者を管理し、後でPHPファイルで使用するアプリケーションIDとシークレットを取得することもできます。

(このステップで混乱した場合は、Google検索を実行できますが、この構成は簡単に見つかります)

2)私は常にこれらのファイルを使用してPHP環境をFacebook APIにリンクしています。Dropboxからのリンクは次のとおりです:https ://www.dropbox.com/s/itw4pav1f7a9vez/files.rar

3)それらのファイルを。という名前のフォルダに入れますfb

4)ユーザーからデータと画像を取得する方法を説明しますが、最初にユーザーは、アプリケーションにログインするときに、アプリケーションがこの情報を取得できるようにする必要があります。

したがって、この例では、ログインに簡単なボタンを使用します。

(アプリケーションIDとシークレットを置き換えることを忘れないでください。「xxx」と「yyy」に注意してください)

<?php

require 'fb/facebook.php';

$facebook = new Facebook(array(
  'appId'  => 'xxx',
  'secret' => 'yyy',
));

// Check if user is already logged
$user = $facebook->getUser();

if ($user) {
  try {
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

// Get login or logout URL
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl();
}

?>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
  <head>
    <title>Facebook PHP SDK</title>
  </head>
  <body>
    <h1>Facebook PHP SDK</h1>

    <?php if ($user): ?>
      <a href="<?php echo $logoutUrl; ?>">Logout</a>
    <?php else: ?>
      <div>
        <a href="<?php echo $loginUrl; ?>">Login with Facebook</a>
      </div>
    <?php endif ?>

    <h3>PHP Session</h3>
    <pre><?php print_r($_SESSION); ?></pre>

    <?php if ($user): ?>
      <h3>Your picture</h3>
      <img src="https://graph.facebook.com/<?php echo $user; ?>/picture">

      <h3>Your info (/me)</h3>
      <pre><?php print_r($user_profile); ?></pre>
    <?php else: ?>
      <strong><em>You are not connected.</em></strong>
    <?php endif ?>
</html>

5)上記の例では、JavaScriptを使用せずにFacebookPHPSDKを使用しています。したがって、ユーザーがログインしてアプリケーションに情報の取得を承認する場合は、ページ全体がアプリケーションのFacebook権限ページにリダイレクトされ、その後、Facebookアプリケーションのメインページに戻ります(あなたの申請)。

6)以下のコードは上記と同じように機能しますが、JavaScriptとカスタムFacebookログインボタンを使用して、質問に書き込んだように特別な権限を設定できます。もう1つの違いは、ページ全体をリダイレクトする代わりにポップアップが表示されることです。

(アプリケーションIDとシークレットを置き換えることを忘れないでください。「xxx」と「yyy」に注意してください)

<?php

require 'fb/facebook.php';

$facebook = new Facebook(array(
  'appId'  => 'xxx',
  'secret' => 'yyy',
));

// Check if user is already logged
$user = $facebook->getUser();

if ($user) {
  try {
    $user_profile = $facebook->api('/me');
    $logoutUrl = $facebook->getLogoutUrl();
  } catch (FacebookApiException $e) {
    $user = null;
  }
} else {
    $loginUrl = $facebook->getLoginUrl();
}

?>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Facebook PHP SDK</title>
    </head>
    <body>
        <fb:login-button size="small" onlogin="after_login_button()" scope="email, user_about_me, user_birthday, user_status, publish_stream, user_photos, read_stream, friends_likes">Login with facebook</fb:login-button>
        <div id="fb-root"></div>
        <script>
            window.fbAsyncInit = function() {
            FB.init({
              appId: '<?php echo $facebook->getAppID() ?>',
              cookie: true,
              xfbml: true,
              oauth: true
            });
            
            // This is used by Facebook login button
            FB.Event.subscribe('auth.login', function(response) {
              if (response.authResponse) {
                 // Specify the login page where Facebook login button is located
                 window.location = 'main.php';
              }
            });
            FB.Event.subscribe('auth.logout', function(response) {
                window.location = 'logout.php';
            });
          };
          (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);
          }());
          
          function after_login_button(){
            FB.getLoginStatus(function(response) {
                if (response.status == 'connected') {
                    // If user is connected, redirect to below page
                    window.location = 'main.php';
                }
            }, true);
          }
        </script>
    </body>
</html>

7)ご覧のとおり、Facebookログインボタンのスコープ属性は、たとえば電子メールなどのユーザーからアプリケーションに必要な特別なアクセス許可と情報を決定します(許可されていない限り、これは常に非公開です)。


8)何かを追加するには、次の方法を使用して、誰かから公開情報のみを取得できます。

// For example: Your Facebook friend's profile is http://www.facebook.com/foobar
$myFriend = $facebook->api('/foobar');
// For example: Your Facebook friend's profile is http://www.facebook.com/users/1002020300010
$myFriend = $facebook->api('/1002020300010');
// Print the name
echo $myFriend['name'];
// Print all data
print_r($myFriend);

そして、Facebookの友達の写真を撮るには、次のようにします。

<img src="https://graph.facebook.com/foobar/picture">

または:

<img src="https://graph.facebook.com/1002020300010/picture">

最後に、必要なすべてのユーザー情報があるとすると、問題や制限なしにすべてをDBに保存できます。

これが参考になることを願っています。

于 2012-07-25T04:11:12.757 に答える
1

Facebookを使用して認証(ログイン)を作成しようとしているようです。

Opauthをチェックアウトすることをお勧めします。これは、すべてを処理し、配列でユーザー情報を返します。その後、データベースに簡単に挿入できます。

簡単なデモについてはhttp://opauth.orgを参照し、サンプルコードを含むライブラリをダウンロードしてください。

于 2012-07-25T03:46:08.420 に答える
0

ここでFacebookが提供するPHPSDKクラスを使用していることを考慮して

あなたはこのようなことをすることができます

$fb = new Facebook(array(
     'appId' => 'YOUR_APP_ID',
     'secret' => 'YOUR_APP_SECRET'
));


$userData = $fb->api('/me','GET');
$userData = serialize($userData);

//now userdata is a string, so, insert into the database.

アプリの構成では、ユーザーに提供する情報の種類を指定する必要があることを忘れないでください。

于 2012-07-25T03:33:09.620 に答える
0

php APIとFacebookが提供するクエリ言語(FQL)を使用できます。サンプルクエリとチュートリアルを含むリンクは次のとおりですhttp://developers.facebook.com/docs/reference/fql/

于 2012-07-25T03:35:07.763 に答える