Используйте Google и Facebook, используя AMP и PHP. Диалоговое окно входа не закрывается после входа в Google - PullRequest
0 голосов
/ 12 февраля 2020

Я использую PHP для реализации бэкэнда. После входа в Google или Facebook диалоговое окно входа и модальное всплывающее окно входа в AMP не закрываются. Он не закрывается и перенаправляется на URL-адрес аутентификации автоматически. Я разместил логин с помощью кнопок Google и Facebook в модальном всплывающем окне AMP.

  • index. html
  • login / google_login. php
  • login / profile. html

index. html

<script id="amp-access" type="application/json">
{
    "authorization": "https://example.com/profile.html",
    "noPingback": "true",
    "login": {
      "facebook-sign-in": "/login/fb_login.php",
      "google-sign-in": "/login/google_login.php",
      "sign-out": "/logout.html"
    },
    "authorizationFallbackResponse": {
        "error": true,
        "loggedIn": false
    }
}
</script>

В этом файле я написал перенаправление URL-адреса для входа в систему Google и получил данные о пользователе от Google. на мой сайт.

google_login. php

$client = new oauth_client_class;

$client->offline = FALSE;
$client->debug = false;
$client->debug_http = true;
$client->redirect_uri = REDIRECT_URL;
$client->client_id = CLIENT_ID;
$application_line = __LINE__;
$client->client_secret = CLIENT_SECRET;

if (strlen($client->client_id) == 0 || strlen($client->client_secret) == 0)
  die('Please go to Google APIs console page ' .
          'http://code.google.com/apis/console in the API access tab, ' .
          'create a new client ID, and in the line ' . $application_line .
          ' set the client_id to Client ID and client_secret with Client Secret. ' .
          'The callback URL must be ' . $client->redirect_uri . ' but make sure ' .
          'the domain is valid and can be resolved by a public DNS.');

$client->scope = SCOPE;
if (($success = $client->Initialize())) {
  if (($success = $client->Process())) {
    if (strlen($client->authorization_error)) {
      $client->error = $client->authorization_error;
      $success = false;
    } elseif (strlen($client->access_token)) {
      $success = $client->CallAPI(
              'https://www.googleapis.com/oauth2/v1/userinfo', 'GET', array(), array('FailOnAccessError' => true), $user);
    }
  }
  $success = $client->Finalize($success);
}
if ($client->exit)
exit;
if ($success) { 
        header("location:https://example.com/profile.html");
        exit;

} else {

    echo "Something went wrong.";

}

} else {
  echo $client->error;
}

Пожалуйста, проверьте мой код и помогите мне решить мою проблему.

$ response = array ('subscriber' => true, 'access' => true, 'return_url' => 'https://www.example.com/profile.html'); echo json_encode ($ response);

Я пробовал этот код вместо перенаправления с использованием заголовка ('Location: url'). Это также не работает. Диалоговое окно входа не закрывается и не перенаправляется на URL-адрес аутентификации.

...