Могу ли я аутентифицировать указанного пользователя c с клиентом Google API PHP? - PullRequest
0 голосов
/ 02 марта 2020

Пользователи в моем приложении подключают свои учетные записи Gmail. У меня есть функция, которая позволяет им отключаться, а затем, прежде чем полностью удалить интеграцию и все связанные с ней данные, они могут восстановить. Я использую метод аутентификации OAuth 2.

В настоящее время, когда я аутентифицируюсь обратно в Google, отображается экран входа в систему, и если у этого пользователя есть несколько входов в Gmail, все они представляются пользователю на выбор.

Если пользователь выбирает адрес электронной почты, отличный от выбранного ранее, это создает конфликт в моей системе. Для этого конкретного сценария c мне нужно выбрать это письмо для них. Возможно ли это?

1 Ответ

1 голос
/ 02 марта 2020

Невозможно на 100% гарантировать, что они войдут в систему с тем же адресом электронной почты, однако вы можете добавить

    $client->setLoginHint('[Users email here]');

Это побудит их войти в систему с этим письмом в качестве всплывающего окна, в котором они должны выберите учетную запись Google будет отображать только тот. Это потребует, чтобы вы сохранили письмо в последний раз.

function buildClient(){

    $client = new Google_Client();
    $client->setAccessType("offline");        // offline access.  Will result in a refresh token
    $client->setIncludeGrantedScopes(true);   // incremental auth
    $client->setAuthConfig(__DIR__ . '/client_secrets.json');
    $client->addScope([YOUR SCOPES HERE]);
    $client->setLoginHint('[Users email here]');
    $client->setRedirectUri(getRedirectUri());  
    return $client;
}

Дополнительная информация из документации

документация openidconnect

enter image description here

...