向您的网站添加“使用 Google 账号登录”按钮,以便用户注册或 登录您的 Web 应用。使用 HTML 或 JavaScript 呈现按钮和 属性来自定义按钮的形状、大小、文本和主题。
用户选择 Google 账号并提供同意后,Google 会使用 JSON Web 令牌 (JWT) 分享用户个人资料。如需简要了解登录流程和用户体验期间涉及的步骤,请参阅运作方式。了解个性化按钮会介绍影响按钮向用户显示方式的不同条件和状态。
前提条件
在将该按钮添加到您的登录页之前,请先完成以下操作:
按钮呈现
要显示“使用 Google 账号登录”按钮,您可以选择 HTML 或 用于在登录页上呈现按钮的 JavaScript 代码:
HTML
使用 HTML 呈现登录按钮,并将 JWT 返回给平台的 登录端点。
<html>
<body>
<script src="https://accounts.google.com/gsi/client" async></script>
<div id="g_id_onload"
data-client_id="YOUR_GOOGLE_CLIENT_ID"
data-login_uri="https://your.domain/your_login_endpoint"
data-auto_prompt="false">
</div>
<div class="g_id_signin"
data-type="standard"
data-size="large"
data-theme="outline"
data-text="sign_in_with"
data-shape="rectangular"
data-logo_alignment="left">
</div>
<body>
</html>
具有 g_id_signin
类的元素会呈现为“使用 Google 账号登录”按钮。按钮是根据数据属性中提供的参数进行自定义的。
如需在同一页面上显示“使用 Google 账号登录”按钮和“Google One 一键登录”,请移除 data-auto_prompt="false"
。建议这样做,以便减少不便
提高登录率。
如需查看数据属性的完整列表,请参阅 g_id_signin
参考文档页面
JavaScript
使用 JavaScript 呈现登录按钮,并将 JWT 返回给 浏览器的 JavaScript 回调处理程序。
<html>
<body>
<script src="https://accounts.google.com/gsi/client" async></script>
<script>
function handleCredentialResponse(response) {
console.log("Encoded JWT ID token: " + response.credential);
}
window.onload = function () {
google.accounts.id.initialize({
client_id: "YOUR_GOOGLE_CLIENT_ID"
callback: handleCredentialResponse
});
google.accounts.id.renderButton(
document.getElementById("buttonDiv"),
{ theme: "outline", size: "large" } // customization attributes
);
google.accounts.id.prompt(); // also display the One Tap dialog
}
</script>
<div id="buttonDiv"></div>
</body>
</html>
指定为 renderButton
第一个参数的元素会显示为“使用 Google 账号登录”按钮。在此示例中,buttonDiv
用于呈现
按钮。系统使用 renderButton
的第二个参数中指定的属性自定义按钮。
为尽量减少用户摩擦,系统会调用 google.accounts.id.prompt()
以显示一键式登录,作为使用按钮注册或登录的第二种替代方式。
GIS 库会解析 HTML 文档,查找 ID 属性设为 g_id_onload
或类属性包含 g_id_signin
的元素。如果匹配的
元素,则系统会使用 HTML 呈现按钮,无论您是否已
也会使用 JavaScript 呈现该按钮为避免显示两次按钮(可能具有冲突的参数),请勿在 HTML 网页中添加与这些名称匹配的 HTML 元素。
按钮语言
按钮语言由浏览器的默认语言自动确定
语言或 Google 会话用户的偏好设置。您还可以通过以下方式手动选择语言:在加载库时将 hl
参数和语言代码添加到 src 指令中,并在 HTML 中添加可选的 data-locale 或 locale 参数 data-locale,或在 JavaScript 中添加 locale。
HTML
以下代码段展示了如何以法语显示按钮语言
方法是向客户端库网址添加 hl
参数,并将
将 data-locale
属性设为法语:
<script src="https://accounts.google.com/gsi/client?hl=fr" async></script>
<div class="g_id_signin" data-locale="fr">
</div>
JavaScript
以下代码段展示了如何通过将 hl
参数添加到客户端库网址并将 locale
参数设置为法语来以法语显示按钮语言:
<script src="https://accounts.google.com/gsi/client?hl=fr" async></script>
<script>
google.accounts.id.renderButton(
document.getElementById("buttonDiv"),
{ locale: "fr" }
);
</script>
凭据处理
表示同意后,Google 会返回 JSON 网络令牌 (JWT) 凭据 或直接登录用户的浏览器(称为 ID 令牌) 端点托管
您选择在何处接收 JWT,取决于您是否使用 HTML 或 JavaScript,以及是否使用了弹出式或重定向用户体验模式。
弹出式窗口模式
使用 popup
用户体验模式可在弹出式窗口中执行登录用户体验流程。这是
通常对用户造成的干扰较小,并且是默认的用户体验模式。
使用以下方式呈现按钮时:
HTML
您可以设置以下任一项:
data-callback
将 JWT 返回给回调处理程序,或data-login_uri
,可让 Google 将 JWT 直接发送到您的登录信息 端点使用 POST 请求。
如果同时设置了这两个值,则 data-callback
优先于
data-login_uri
。在使用回调处理程序进行调试时,设置这两个值可能会很有帮助。
JavaScript
您必须指定 callback
,因为在 JavaScript 中呈现按钮时,弹出式窗口模式不支持重定向。如果已设置,系统会忽略 login_uri
。
如需详细了解如何解码返回的凭据,请参阅处理返回的凭据响应。 JS 回调处理程序中的 JWT。
重定向模式
使用 redirect
用户体验模式时,系统会使用用户浏览器的全页重定向来执行登录用户体验流程,Google 会使用 POST 请求将 JWT 直接返回到您的登录端点。这通常会给用户带来一种更干扰的体验,但被视为
是最安全的登录方法
使用以下方式呈现按钮时:
- HTML(可选)将
data-login_uri
设置为登录端点的 URI。 - JavaScript:可选择将
login_uri
设置为登录端点的 URI。
如果您未提供值,Google 会将 JWT 返回到当前 页面。
您的登录端点 URI
设置 data-login_uri
或 login_uri
时,请使用 HTTPS 和绝对 URI。例如 https://example.com/path
。
仅当在开发期间使用 localhost 时才允许使用 HTTP:http://localhost/path
。
请参阅使用安全的 JavaScript 源和重定向 URI ,查看 Google 要求和验证规则的完整说明。