The docs https://developers.google.com/identity/sign-in/web/sign-in#add_a_google_sign-in_button告诉你添加这个:
<div class="g-signin2" data-onsuccess="onSignIn"></div>
但这不适用于 React。我发现删除data-onsuccess
and class
(className
) 来自div
成功了。所以如果你有这样的事情:
useEffect(() => {
window.gapi.signin2.render('gs2', {
'scope': 'https://www.googleapis.com/auth/plus.login',
'width': 200,
'height': 50,
'longtitle': true,
'theme': 'dark',
'onsuccess': onGoogleSignIn
});
}, []);
const onGoogleSignIn = user => {
console.log('user', user);
}
那么你的 google 按钮的 jsx 就可以是这样的:
<div id="gs2"></div>
请注意,我删除了class
并添加了id
因为gapi.signin2.render https://developers.google.com/identity/sign-in/web/reference#gapisignin2renderid_options正在寻找一个id
.
需要注意的是,现在你失去了样式。不幸的是,添加className="g-signin2"
回到div
实际上破坏了回调。