Hy vọng bạn đang hoạt động tốt. Đây là giải pháp, Bạn có thể thử điều này: Thực tế không có tên hàm getAccessToken (Chỉ Android) xác định trong GoogleSignin.android.js như được viết ở đây https://github.com/devfd/react-native-google-signin. Nhưng phần tốt nhất là họ đã triển khai giải pháp trong GoogleSignin.android.js. chỉ cần xem mã bên dưới từ 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);
});
});
Điều này chỉ là chúng tôi đã sử dụng mã này một cách khôn ngoan. Tôi đã sử dụng mã bên dưới để nhận access_token và nó giúp tôi giải quyết vấn đề mã thông báo truy cập của mình. tôi thay đổi trên chức năng như thế này trong 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);
});
});
và tôi gọi hàm này như thế này từ 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();
}
Bạn có thể gọi nó là một chức năng riêng lẻ giống như thế này. trong 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);
});
}
và từ index.android.js chỉ cần gọi chức năng này như thế này
_getToken(){
console.log(GoogleSignin.getAccessTok(this.state.user));
}
duy nhất bạn phải làm là để vượt qua người dùng hiện tại để có thể truy cập token. Hy vọng điều này sẽ giúp bạn. Có một ngày tuyệt vời.Cảm ơn bạn.
Một lần nữa bạn là một anh hùng. Tôi đã dành khoảng hai giờ đêm qua không tìm thấy điều này một chút trong tài liệu này. Cảm ơn. – stickfigure
@stickfigure nếu bạn quan tâm, tôi cũng đã viết một bài viết về truy cập phía máy chủ với API Identity mới ngay hôm nay, vì có một số câu hỏi sắp tới và tài liệu chưa thực sự mở rộng về nó: http://codingwithgerwin.blogspot.co.at/2015/04/google-sign-in-20-server-side.html – Scarygami
Bài viết tuyệt vời, tôi hy vọng nó được lập chỉ mục nhanh chóng :) – stickfigure