1

Safari および IE で Facebook にログインする際に問題が発生しています。次のコードを使用して、Chrome と Firefox で問題なくログインできます。

        var appId = 'APP ID';
    var uid;

    // Initialize the JS SDK
    FB.init({
     appId: appId,
     status: true, // check login status
     cookie: true, // enable cookies to allow the server to access the session
     xfbml: true,  // parse XFBML
     channelUrl: '//localhost:8888/photo/channel.html' // Channel File
    });
    // Get the user's UID
    FB.getLoginStatus(function(response) {
     uid = response.authResponse.userID ? response.authResponse.userID : null;
     console.info(uid);
    });

    function authUser() {
     FB.login(function(response) {
       console.info(response);
       uid = response.authResponse.userID ? response.authResponse.userID : null;
       console.info("called");
     }, {scope:'email,publish_actions'});

しかし、私のコードがFB.getLoginStatusSafariとIEに到達すると、応答が表示されます

authResponse: undefined
status: "unknown"

編集: アクセス許可を示すポップアップが Safari と IE でポップアップしないことを忘れていました。

4

2 に答える 2

1

ステータスが「不明」の場合は、次の 2 つのいずれかを意味します。

  1. ユーザーがログインしていない、または
  2. サードパーティの Cookie が無効になっています

Safari は、サードパーティの Cookie がデフォルトで無効になっている唯一のブラウザです (Firefox も間もなくそれに続きます)。IE のより高度なセキュリティ設定の一部も、それらをオフにします。あなたのコードは Firefox/Chrome で動作しているので、これが原因だと思います。

残念ながら、FB.getLoginStatus が適切な authResponse とステータスを返すには、サードパーティの Cookie が必要です。あなたの選択肢はかなり限られていると思います:

  1. ユーザーにPHPまたは別のバックエンドSDKを介してログインさせ、2時間ごとに再度ログインするように強制します(FBトークンは7600秒ごとに期限切れになると思います)
  2. 「不明」ステータスを検出し、facebook.com のサードパーティ Cookie を有効にするように求めるメッセージをユーザーに表示します。
于 2013-06-04T03:20:14.413 に答える
0

ローカルホストではなく Facebook でアプリを実行することで回避できた問題を、実際には修正しませんでした。これは、Facebook ではすでにログインしているためだと思います。

于 2012-10-05T18:29:09.117 に答える