簡體   English   中英

Facebook通過Javascript SDK登錄適用於移動和本地主機,但不適用於台式計算機

[英]Facebook login via Javascript SDK works on mobile and localhost but not on desktop computers

這很奇怪。 我通過Javascript SDK進行Facebook登錄,Cookie設置為True ,在回調時我嘗試獲取該cookie,然后在我的數據庫中添加或不添加訪問者。

它正在使用測試應用程序在移動設備和localhost上工作,但似乎並不適用於所有台式計算機(適用於我的iMac,而不適用於我的筆記本電腦)。 我清除了相關瀏覽器上的緩存和cookie,沒有改變一件事。

當我使用var_dump來檢查它時, $helper->getAccessToken給了我一個NULL變量,否則我得到一個空白頁面。

在我將我的網站放入SSL之前,它曾經很好地工作。

任何幫助非常感謝。

我的網站在線:www.KomuniD.com您是否想嘗試登錄並給我一個反饋。

我的fb_login.js:

logInWithFacebook = function() {
  if ("standalone" in navigator && navigator.standalone) {
    $("a").click(function (event) {
        event.preventDefault();
        window.location = $(this).attr("href");
    });
  }

  FB.login(function(response) {
    if (response.authResponse) {
      window.location.replace('http://www.komunid.com/fb-callback.php');
    } else {
      alert('User cancelled login or did not fully authorize.');
    }
  },
  {
    scope: 'public_profile,email,user_friends',
    auth_type: 'rerequest',
  });

  return false;
};

 window.fbAsyncInit = function() {
    FB.init({
      appId      : 'my-app-id',
      status     : true,
      xfbml      : true,
      cookie     : true,
      version    : 'v2.6'
    });
  };

  (function(d, s, id){
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "//connect.facebook.net/fr_FR/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));

我的fb_callback.php:

<?php
session_start();

require __DIR__ . '/init.php';

$fb = new Facebook\Facebook([  
  'app_id' => 'my-app-id',  
  'app_secret' => 'my-app-secret',
  'default_graph_version' => 'v2.6',
  'cookie' => true 
  ]);

$helper = $fb->getJavaScriptHelper();

try {  
  $accessToken = $helper->getAccessToken(); 
} catch(Facebook\Exceptions\FacebookResponseException $e) {  
  // When Graph returns an error  
  echo 'Graph returned an error: ' . $e->getMessage();  
  exit;  
} catch(Facebook\Exceptions\FacebookSDKException $e) {  
  // When validation fails or other local issues  
  echo 'Facebook SDK returned an error: ' . $e->getMessage();  
  var_dump($helper->getPersistentDataHandler());
  var_dump($_GET, $_SESSION);
  exit;  
}  

if (!isset($accessToken)) {  
  if ($helper->getError()) {  
    header('HTTP/1.0 401 Unauthorized');  
    echo "Error: " . $helper->getError() . "\n";
    echo "Error Code: " . $helper->getErrorCode() . "\n";
    echo "Error Reason: " . $helper->getErrorReason() . "\n";
    echo "Error Description: " . $helper->getErrorDescription() . "\n";
  } else {  
    header('HTTP/1.0 400 Bad Request');  
    echo 'Bad request';  
  }  
  exit;  
}  

在我將我的網站放入SSL之前,它曾經很好地工作。

好吧,如果你切換到HTTPS,那么:

window.location.replace('http://www.komunid.com/fb-callback.php');

也應該是HTTPS URL。

好的,我發現了答案。

如果我從https://komunid.com登錄它不起作用。

僅適用於https://www.komunid.com

謝謝

您應該將域名從http://yourdomain.com/配置為http://yourdomain.com
沒有ssl或https與我合作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM