0

ページ タブ (iframe) でアプリを表示する場合、Facebook 認証ダイアログは表示されません。ただし、アプリの外部を表示すると問題なく動作します。

私の Facebook アプリの設定は次のとおりです。

Site URL: http://domain.com/test
Canvas URL: http://domain.com/test/
Secure Canvas URL: https://domain.com/test/
Page Tab URL: http://domain.com/test/
Secure Page Tab URL: https://domain.com/test/

次のリンクを使用してページ タブ ny にアプリを追加しました: https://www.facebook.com/dialog/pagetab?app_id=[MY_APP_ID]&next=https://domain.com/test/

私はphp sdkを使用しています。//domain.com/test/index.php のコードは次のようになります。

<?php
require 'facebook-php-sdk/src/facebook.php';

$facebook = new Facebook(array(
   'appId'  => '[MY_APP_ID]',
   'secret' => '[MY_APP_SECRET]',
   ));

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

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

if ($user) {
   try {
      // Proceed knowing you have a logged in user who's authenticated.
      $user_profile = $facebook->api('/me');
   } catch (FacebookApiException $e) {
   error_log($e);
   $user = null;
   }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Facebook test</title>
</head>

<body>
<p>
<?php if($user) : ?>
   <a href="<?php echo $logoutUrl;?>">Logout</a>
<?php else: ?>
   <a href="<?php echo $loginUrl;?>">Login</a>
<?php endif; ?>
</p>
</body>
</html>

どんな助けにも感謝します!!

4

2 に答える 2

2

iframeの親URLを変更するJS関数を作成してみてください

function RedirectTo(installURL){
     window.top.location.href = installURL;
}

ログインテキストのonClickイベントでその関数を呼び出します

<?php else: ?>
   <a href="#" onclick='RedirectTo("<?php echo $loginUrl;?>")'>Login</a>
<?php endif; ?>

$loginUrlvarのRedirectURIがアプリのURLであることを確認してください

次に、Facebookアプリ(https://developers.facebook.com/apps)でこの設定を変更する必要があります

アプリドメイン: facebook.com

FacebookログインのあるWebサイト:FacebookアプリのURL(例:https ://www.facebook.com/ {FanPageUsername}?sk = app_ {appID}

于 2012-06-03T01:04:51.330 に答える
2

iframeで認証ダイアログを使用することはできません(なぜですか?ここを参照してください:http://facebook.stackoverflow.com/a/10831018/1427878)。リンクにtarget="_ blank"を追加すると、機能するはずです。または、追加費用なしでポップアップが必要な場合は、JavaScript SDKを埋め込み、FB.loginを使用します。

于 2012-05-31T13:55:24.257 に答える