FB.login() и FB.getLoginStatus() возвращают {authResponse: null, status: 'unknown'} | функции обратного вызова выполняются до получения ответа

1
7

Я интегрирую Facebook Business Login с помощью Facebook JS SDK. Несмотря на то, что я следовал многим руководствам и официальному руководству, я столкнулся с постоянной проблемой в течение последних нескольких дней. Я думаю, что это может быть пограничным случаем, характерным для моей настройки.

Обе функции вызова FB.getLoginStatus() и FB.login() возвращают ответ ниже.

Я уверен, что я вошел в Facebook, и вместо этого он должен показывать "подключено". Проблема в том, что функции обратного вызова запускаются до того, как Facebook возвращает ответ. Например, когда FB.login() открывает диалоговое окно входа, консоль показывает ответ обратного вызова до завершения входа. Кроме того, после завершения входа функция обратного вызова больше не вызывается. Вот скриншот: Диалог входа в Facebook

(Я просто скопировал из официального руководства Facebook)

Я использую Facebook Business Login, чтобы запрашивать у клиентов разрешение на управление их страницами. Я настроил конфигурацию токена доступа пользователя и включил свой идентификатор конфигурации как в кнопку входа, так и в функцию FB.login(). Мой бизнес проверен. Я тестирую это на локальном хосте. (У меня есть локальный SSL, и я использую HTTPS. Я также развернул это в своем реальном веб-приложении, где у меня также есть https, и столкнулся с той же проблемой). Мое приложение находится в режиме реального времени.

Ниже приведены некоторые скриншоты из моих конфигураций приложения. Я пытаюсь предоставить как можно больше подробностей, так как полагаю, что это может быть связано с настройками моего приложения. Настройки моего приложения Facebook

Конфигурация входа в мой бизнес Facebook

{authResponse: null, status: 'unknown'} 
    <!DOCTYPE html>
<html>
<head>
<title>Facebook Login JavaScript Example</title>
<meta charset="UTF-8">
</head>
<body>
<script>

  function statusChangeCallback(response) {  // Called with the results from FB.getLoginStatus().
    console.log('statusChangeCallback');
    console.log(response);                   // The current login status of the person.
    if (response.status === 'connected') {   // Logged into your webpage and Facebook.
      testAPI();  
    } else {                                 // Not logged into your webpage or we are unable to tell.
      console.log( 'Please log ' +
        'into this webpage.');
        FB.login((response) => {
          console.log(response)

        },{
            "config_id":{{FACEBOOK_CONFIG_ID}}
        })
    }
  }


  function checkLoginState() {               // Called when a person is finished with the Login Button.
    FB.getLoginStatus(function(response) {   // See the onlogin handler
      statusChangeCallback(response);
    });
  }


  window.fbAsyncInit = function() {
    FB.init({
      appId      : '{{FACEBOOK_APP_ID}}',
      cookie     : true,                     // Enable cookies to allow the server to access the session.
      xfbml      : true,                     // Parse social plugins on this webpage.
      version    : 'v20.0'           // Use this Graph API version for this call.
    });


    FB.getLoginStatus(function(response) {   // Called after the JS SDK has been initialized.
      statusChangeCallback(response);        // Returns the login status.
    });
  };
 
  function testAPI() {                      // Testing Graph API after login.  See statusChangeCallback() for when this call is made.
    console.log('Welcome!  Fetching your information.... ');
    FB.api('/me', function(response) {
      console.log('Successful login for: ' + response.name);
      document.getElementById('status').innerHTML =
        'Thanks for logging in, ' + response.name + '!';
    });
  }

</script>


<!-- The JS SDK Login Button -->

<fb:login-button config_id="{{FACEBOOK_CONFIG_ID}}" onlogin="checkLoginState();">
</fb:login-button>

<div id="status">
</div>

<!-- Load the JS SDK asynchronously -->
<script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js"></script>
</body>
</html>
Светозар
Вопрос задан18 января 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.