Spero che stiate bene. Ecco la soluzione, si può provare questo: In realtà non esiste un nome di funzione come getAccessToken (solo Android) definire in GoogleSignin.android.js come scritto qui https://github.com/devfd/react-native-google-signin. Ma la parte migliore è che hanno già implementato la soluzione in GoogleSignin.android.js. basta dare un'occhiata al codice qui sotto da GoogleSignin.android.js
currentUserAsync() {
return new Promise((resolve, reject) => {
const sucessCb = DeviceEventEmitter.addListener('RNGoogleSignInSilentSuccess', (user) => {
this._user = user;
RNGoogleSignin.getAccessToken(user).then((token) => {
this._user.accessToken = token;
this._removeListeners(sucessCb, errorCb);
resolve(this._user);
})
.catch(err => {
this._removeListeners(sucessCb, errorCb);
resolve(this._user);
});
});
Il fatto è che solo noi avere fare utilizzare questo codice con saggezza. Ho usato il codice seguente per ottenere access_token e mi aiuta a risolvere il mio problema con il token di accesso. cambio sopra funzione come questa in GoogleSignin.android.js
currentUserAsync() {
return new Promise((resolve, reject) => {
const sucessCb = DeviceEventEmitter.addListener('RNGoogleSignInSilentSuccess', (user) => {
this._user = user;
RNGoogleSignin.getAccessToken(user).then((token) => {
this._user.accessToken = token;
this._removeListeners(sucessCb, errorCb);
resolve(token);
})
.catch(err => {
this._removeListeners(sucessCb, errorCb);
resolve(this._user);
});
});
e io chiamo questa funzione come questo da index.android.js.
_signIn() {
GoogleSignin.signIn()
.then((user) => {
console.log('this1' + JSON.stringify(user));
this.setState({user: user});
var gettoken = GoogleSignin.currentUserAsync(user).then((token) => {
console.log('USER token', token);
this.setState({user: user});
}).done();
}).catch((err) => {
console.log('WRONG SIGNIN', err);
})
.done();
}
È possibile chiamarlo come una singola funzione in questo modo. in GoogleSignin.android.js
getAccessTok(user)
{
RNGoogleSignin.getAccessToken(user).then((token) => {
this._user.accessToken = token;
resolve(token);
})
.catch(err => {
this._removeListeners(sucessCb, errorCb);
console.log('got error');
resolve(this._user);
});
}
e da index.android.js chiamare questa funzione come questa
_getToken(){
console.log(GoogleSignin.getAccessTok(this.state.user));
}
solo quello che dovete fare è quello di superare l'utente corrente per ottenere l'accesso token. Spero che questo ti possa aiutare. Buona giornata. Grazie.
Ancora una volta sei un eroe. Ho passato circa due ore la scorsa notte non riuscendo a trovare questo piccolo frammento nella documentazione. Grazie. – stickfigure
@stickfigure se sei interessato, ho scritto anche un articolo sull'accesso lato server con la nuova API Identity oggi, dato che c'erano diverse domande in arrivo e i documenti non sono ancora così esaurienti su di esso: http://codingwithgerwin.blogspot.co.at/2015/04/google-sign-in-20-server-side.html – Scarygami
Grande articolo, spero che venga indicizzato rapidamente :) – stickfigure