0

FacebookのデフォルトのPHPWebサイト統合と認証を使用しようとしています。ユーザーがログインすると、ユーザーからさまざまな情報を取得するためのアクセス許可を要求できます。


この質問はちょっと古いです。harkirat1892のコメントに注意してください。

「FacebookSDKv4.4を使用している人がこの質問に出くわした場合、小さな変更があるため、Dhirajによる回答は機能しません。getLoginUrlに渡される配列にredirect_uriを含める必要はありません。

v4.4によると、getLoginUrlは次のように機能するはずです。

$loginUrl = $facebook->getLoginUrl(
array(
    'scope'         => 'email,user_checkins, user_birthday'
)
);

さまざまなスコープがここにあります:Facebookの権限。」


JavaScriptを使用してそれを行う方法を理解するのは本当に簡単でしたが、PHPの例でスコープを指定する場所がわかりません。

基本的に、私は彼らの電子メールと場所、そして多分他のいくつかの情報にアクセスする許可を要求したいだけです。

これが私が使っているコードです:(それはわずかに変更されていますが、彼らが持っていたものとほぼ完全に一致しています。)

<?php
    define('YOUR_APP_ID', '---------');
    define('YOUR_APP_SECRET', '------------');

    //Uses the PHP SDK.  Download from https://github.com/facebook/php-sdk
    require 'facebook.php';

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

    $FBUID = $facebook->getUser();
?>

<?php  if ($FBUID) {
    $userInfo = $facebook->api('/' + $FBUID); ?>

<?php $FBName = $userInfo['name'];?>
    <!--
      Welcome <? // = $userInfo['name'] ?> -->

<?php } else { ?>
    <div id="fb-root"></div>
    <fb:login-button></fb:login-button>
<?php } ?>

    <script>
        window.fbAsyncInit = function() {
            FB.init({
                appId      : '---------------',
                status     : true,
                cookie     : true,
                xfbml      : true,
                oauth      : true,
            });

            FB.Event.subscribe('auth.login', function(response) {
                window.location.reload();
            });
        };

        (function(d){
            var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
            js = d.createElement('script'); js.id = id; js.async = true;
            js.src = "//connect.facebook.net/en_US/all.js";
            d.getElementsByTagName('head')[0].appendChild(js);
         }(document));
    </script>
4

4 に答える 4

2

これは、通常、PHPでスコープを指定する方法です(ドキュメントを確認してください)。

$facebook = new Facebook(array(
    'appId'  => AppInfo::appID(),
    'secret' => AppInfo::appSecret(),
));

$loginUrl = $facebook->getLoginUrl(
    array(
        'scope'         => 'read_stream,publish_stream,publish_actions,manage_pages,email,user_checkins',
        'redirect_uri'  => $redirectURI
    )
);

これがお役に立てば幸いです。

于 2012-06-09T07:31:54.953 に答える
1

上記の答えは素晴らしいですが、Facebook は物事を変えるのが大好きです。このフォーラムでチェックされた最良の回答は、古いバージョンの Facebook SDK に関するものです。上記の例と同様に、バージョン 5.0 のアクセス許可またはスコープを要求する方法を次に示します。

session_start();

$F = new \Facebook\Facebook([
  'app_id'      => 'app-id',
  'app_secret'  => 'app-secret',
  'default_graph_version' => 'v2.8'
 ]);

$helper      = $F->getRedirectLoginHelper();
$callBackUrl = "http://website.com/callBack.php";
$scope       = array("email","user_likes");
$loginUrl    = $helper->getLoginUrl($url,$scope);

また、上記の回答は「user_checkins」のリクエストであることに気付きましたが、これは推奨されていないと思います。パーミッションの最新の参照リストはこちらです。

于 2016-11-02T02:10:17.433 に答える
1

Facebook SDK v4.4 を使用している人がこの質問に出くわした場合、小さな変更があるため、Dhiraj による回答はその場合には機能しません。getLoginUrl に渡される配列に redirect_uri を含める必要はありません。

v4.4 に従って、getLoginUrl は次のように動作する必要があります。

$loginUrl = $facebook->getLoginUrl(
array(
    'scope'         => 'email, user_checkins, user_birthday'
)

);

さまざまなスコープがここにあります: Facebook の権限

于 2015-01-09T23:01:56.513 に答える