问题描述
npm 上可用的任何经过验证的库,以便我可以使用它在我的本机应用程序之一中实现 Google 一键登录。
解决方法
你是说用谷歌登录吗?你试过这个包 google-signin 吗?
import { GoogleSignin,statusCodes } from '@react-native-community/google-signin';
import { connect } from "react-redux";
import LoginButtonBase from './LoginButtonBase';
import { Alert } from 'react-native';
class GoogleLoginButton extends LoginButtonBase {
constructor(props) {
super(props);
this.login = this.login.bind(this);
}
componentDidMount() {
// GoogleSignin.configure({
// offlineAccess: true,// webClientId: "your-client-id"
// });
}
async login() {
console.log('login google');
try {
let hasGoogleService = await GoogleSignin.hasPlayServices();
if (!hasGoogleService) {
Alert.alert(null,"This device has no google play");
return;
}
await GoogleSignin.signOut();
const userInfo = await GoogleSignin.signIn();
let { idToken } = userInfo;
if (idToken) {
this.props.dispatch({
type: "auth/googleLogin",payload: {
googleToken: idToken
}
})
}
} catch (error) {
console.warn(error);
if (error.code === statusCodes.SIGN_IN_CANCELLED) {
// user cancelled the login flow
} else if (error.code === statusCodes.IN_PROGRESS) {
// operation (e.g. sign in) is in progress already
} else if (error.code === statusCodes.PLAY_SERVICES_NOT_AVAILABLE) {
// play services not available or outdated
} else {
// some other error happened
}
}
}
}
export default connect(null,null)(GoogleLoginButton);