get_user (uid) .email возвращает None, если пользователь вошел в систему через facebook в firebase_admin django - PullRequest
0 голосов
/ 04 октября 2019

Код:

import firebase_admin
from firebase_admin import auth
from firebase_admin import credentials
from firebase_admin.auth import get_user

cred = credentials.Certificate("cred.json")
firebase_admin.initialize_app(cred)

verified = auth.verify_id_token(id_token=token)
print(get_user(verified["uid"]).email)

вывод этого кода будет Нет, если пользователь вошел в систему с помощью Facebook, но если пользователь вошел в систему с помощью Google, он вернет адрес электронной почты пользователя

1 Ответ

0 голосов
/ 04 октября 2019

Такое поведение можно объяснить просто. Если пользователь вошел в систему с помощью Google, он устанавливает UID для пользователя (UID и пользователь связан друг с другом). Важно отметить, что Google UID и пользователь связаны друг с другом. С другой стороны, когда пользователь входит в Facebook, UB и пользователь FB ассоциируются друг с другом.

То есть, как только пользователь проходит аутентификацию с использованием FB, который был зарегистрирован с помощью Google, и вы передаете UID FB в метод get_user Google,что происходит только от Google, это происходит, потому что FB и Google имеют разные типы UID, которые идентифицируют пользователя.

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

...