Я не могу получить accessToken, он мне нужен в моем бэкэнд API.
Когда я попробую это,
googleLogin = () => {
GoogleSignin.signIn()
.then((data) => {
console.info("TEST "+JSON.stringify(data));
var postData = {
access_token: data.accessToken,
code: data.idToken,
};
let axiosConfig = {
headers: {
'Content-Type': 'application/json',
"Accept": "application/json",
}
};
....
//Backend api axios call
....
})
.then((user) => {
console.info("TEST G LOGIN 1 "+JSON.stringify(user))
})
.catch((error) => {
console.info("....."+JSON.stringify(error))
});
}
получил этот ответ, он не включает
accessToken
{
"scopes": ["https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/drive.readonly"],
"serverAuthCode": "4/jwE5LLLLLLa7-f33333jmMD2V978oyp44444eb9yGe_qhHnkXXXXXXXLFXKZlQdDzlH-iIJx_gzqlLLLLLL3Q0PP0",
"idToken": "...v65a4MCC-ZUQmys_wf_DoCOBJEMuI........",
"user": {
"photo": "https://lh3.googleusercontent.com/-tLLLLLyeS0KE/AAAMMMMAAAI/AAAAAAAAAAA/ACHi3reMhihoeTe_6NjL666666EUVU82Q/s96-c/photo.jpg",
"email": "[email protected]",
"familyName": "tech",
"givenName": "test",
"name": "testtech",
"id": "11688888817288868"
}
}
согласно документация
getTokens() Resolves with an object containing { idToken: string, accessToken: string, } or rejects with an error. Note that using accessToken is discouraged.
Итак, я попробовал это в
GoogleSignin.Sign({
....
var gettoken = GoogleSignin.currentUserAsync(data.user).then((token) => {
console.info('USER token', token);
}).done();
...
})
он получил ошибку, а также попытался const token = GoogSignIn.getTokens(), он возвращает null.
информация о package.json
{
...
"react": "16.8.3",
"react-native": "0.59.9",
"react-native-firebase": "5.3.1",
"react-native-google-signin": "^2.0.0"
...
}
Пожалуйста, предложите процедуру получения accessToken.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Наконец я получаю accessToken.
Шаг 1:- Я удалил все сгенерированные clidenId в консоли разработчика Google (сохранил только идентификатор клиента веб-приложения, который я использовал в своем веб-проекте), а также удалил приложение Android в проекте Firebase.
Шаг 2:-
Создайте новое приложение для Android в firebase, загрузите google-services.json и вставьте его в android/app/google-services.json
Шаг 3:- Скопировал clidenId из этой части google-services.json.
...
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "xxxxxxx-xxxxx.apps.googleusercontent.com", //<--- copied this clientID
"client_type": 3
},
{
"client_id": "XXXXXXXXXX-fBBBBBBBBBBBBBBBBBBBBBBBBpugnhrade.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "com.projectios"
}
}
]
}
}
...
и вставить
GoogleSignin.configure({
webClientId: 'paste it here',
});
Шаг 4: - Это код для получения accessToken (Но этот код не работал в моем предыдущем файле google-services.json)
googleLogin = () => {
GoogleSignin.signIn()
.then((data) => {
console.info("TEST " + JSON.stringify(data));
const currentUser = GoogleSignin.getTokens().then((res)=>{
console.info(res.accessToken ); //<-------Get accessToken
var postData = {
access_token: res.accessToken,
code: data.idToken,
};
let axiosConfig = {
headers: {
'Content-Type': 'application/json',
"Accept": "application/json",
}
};
-----
backend api call
-----
});
})
.then((user) => {
console.info("TEST G LOGIN 1 " + JSON.stringify(user))
})
.catch((error) => {
console.info("....." + JSON.stringify(error))
});
}