Пожалуйста, я пытаюсь внедрить социальную аутентификацию в моем приложении для флаттера с помощью плагина google_sign_in plugin . Он работает правильно на стороне клиента и получает данные учетной записи пользователя.
Моя проблема в том, что я хочу сохранить пользователя в своей базе данных, поэтому мне нужно проверить, что id_token
получено на стороне сервера. Я попытался сделать это с помощью библиотеки API Google на стороне сервера, как показано здесь , но я получил неверный результат токена. В конце концов я решил попробовать конечную точку tokeninfo
https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=<my_token>
, которая должна возвращать ответ 200 с телом, содержащим данные пользователя и другую информацию, но я получаю ответ 400 с телом {"error_description": "Invalid Value"}
.
Я расшифровал токен с помощью jwt.io, чтобы удостовериться, что это токен с истекшим сроком действия, и токен все еще действителен.
Это код google_sign_in, который я использовал на флаттере, чтобы получить id_token.
GoogleSignIn _googleSignIn = new GoogleSignIn(
scopes: <String>[
'profile',
'email',
'https://www.googleapis.com/auth/contacts.readonly',
],
);
Future<Null> _handleSignIn() async {
try {
_googleSignIn.signIn().then((result){
result.authentication.then((googleKey){
print(googleKey.accessToken);
print(googleKey.idToken);
print(_googleSignIn.currentUser.displayName);
}).catchError((err){
print('inner error');
});
}).catchError((err){
print('error occured');
});
print('signed in .....');
} catch (error) {
print(error);
}
}
Пожалуйста, любая помощь будет принята с благодарностью.