2

サイトのユーザーが既存の Facebook アカウントを使用してログインできるようにしたいと考えています。

developers.facebook.comから Facebook PHP SDK をダウンロードし、Web サイト用のアプリをセットアップしました。SDK にバンドルされている example.php ファイルを使用して、アプリの「appID」と「secret」の番号を交換しました。

注: コードでは、'appID' と 'secret' は実際の同等のものを置き換えています。


私はこれが私のヘッダーです:

require 'src/facebook.php';(これは間違いなく見つかっています)


これは、ログインが行われるメイン ページのコードです (これも example.php から):

<?php
$facebook = new Facebook(array(
'appId'  => 'appID',
'secret' => 'secret',
));

var_dump($facebook);
// Get User ID
$user = $facebook->getUser();

echo "<br />";
var_dump($user);

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

if ($user) {
    $logoutUrl = $facebook->getLogoutUrl();
} else {
    $loginUrl = $facebook->getLoginUrl();
}

$naitik = $facebook->api('/naitik');
?>

<?php var_dump($user); ?>


<h1>php-sdk</h1>

<?php if ($user): ?>
<a href="<?php echo $logoutUrl; ?>">Logout</a>
<?php else: ?>
<?php echo "LoginURL:"; var_dump($loginUrl);?>
<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>You</h3>
<img src="https://graph.facebook.com/<?php echo $user; ?>/picture">

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

<h3>Public profile of Naitik</h3>
<img src="https://graph.facebook.com/naitik/picture">
<?php echo $naitik['name']; ?>

Facebook にログインしていないときにリンクをクリックすると、Facebook のログイン ページに移動します。ログイン後、URL に新しい変数 (状態、コードなど) を付けてメイン サイトにリダイレクトします。「ログイン」すると、var_dump($user)が返されますint(0)

誰かが私を正しい方向に向けることができますか? ユーザーを割り当てられない理由がわかりません。


ダンプの結果$facebook:

object(Facebook)#182 (9) { 
["sharedSessionID:protected"]=> NULL 
["appId:protected"]=> string(15) "appID" 
["appSecret:protected"]=> string(32) "secret" 
["user:protected"]=> NULL ["signedRequest:protected"]=> NULL 
["state:protected"]=> NULL ["accessToken:protected"]=> NULL 
["fileUploadSupport:protected"]=> bool(false) 
["trustForwarded:protected"]=> bool(false) 
} 
4

2 に答える 2

0

ユーザーとして投稿するなど、Facebookの接続を使用していない場合。Facebookから入手できるiframeの登録フォームを調べてみてください。

于 2012-10-17T01:19:45.260 に答える
0

それは私に起こり、Apacheログを確認すると、これが見つかりました:

そして、PHP SDK(Curlを使用)を介してFacebookと通信するときにSSLの問題が見つかりました。CURL_OPTS "CURLOPT_SSL_VERIFYPEER" を "false" に設定する必要があります。

元:

facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;

于 2014-04-15T11:35:59.917 に答える