Сопоставьте вход в Google с учетными записями пользователей приложения. - PullRequest
0 голосов
/ 07 апреля 2020

Моя интеграция для этого вопроса основана на PHP, и я объясню это для контекста, хотя этот вопрос должен применяться и к не PHP стекам, использующим Google Sign-In.

Я интегрирую форму входа в Google в пользовательское приложение PHP для многих пользователей, использующих пакет composer league / oauth2-google:

https://github.com/thephpleague/oauth2-google

I Я могу запустить следующее, чтобы получить эту информацию API из настроенной мной учетной записи API Google после перенаправления со страницы входа в систему Google в моем приложении, где пользователь предоставил Google свои учетные данные:

$token = $this->provider->getAccessToken('authorization_code', [
    'code' => $_GET['code']
]);

// We got an access token, let's now get the owner details
$ownerDetails = $this->provider->getResourceOwner($token)->toArray();

dump($ownerDetails);

dump($token);

Что выводит следующее:

array:9 [▼
   "sub" => "12345678901234567890"
   "name" => "John Doe"
   "given_name" => "John"
   "family_name" => "Doe"
   "picture" => "https://lh3.googleusercontent.com/a-/example"
   "email" => "jdoe@example.com"
   "email_verified" => true
   "locale" => "en"
   "hd" => "example.com"
]

AccessToken {#215 ▼
    #accessToken: "example-token"
    #expires: 1586293521
    #refreshToken: null
    #resourceOwnerId: null
    #values: array:3 [▼
        "scope" => "https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email openid"
        "token_type" => "Bearer"
        "id_token" => "example-token"
    ]
}

Документация Google гласит использовать дополнительный номер для идентификации пользователей. Например, здесь:

https://youtu.be/j_31hJtWjlw?t=60

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

Когда пользователь входит в приложение с помощью входа в Google, как я должен сопоставить информацию из API Google к информации в приложении? Мне было бы интересно узнать, каков типичный процесс для этого (если таковой имеется), или хотя бы понять хороший способ справиться с этим?

У нас есть большая база существующих пользователей, которые хотели бы переключиться на использование логинов на основе Google. Есть ли в учетной записи пользователя место, где они могут получить дополнительный номер, и я могу позволить им вставить его в форму в моем приложении, чтобы предоставить этим пользователям доступ через Google Sign-In?

...