在您的網站中新增「使用 Google 帳戶登入」按鈕,方便使用者註冊或 登入網頁應用程式。使用 HTML 或 JavaScript 顯示按鈕, 屬性來自訂按鈕形狀、大小、文字和主題。
使用者選取 Google 帳戶並提供同意聲明後,Google 就會使用 JSON Web Token (JWT) 分享使用者個人資料。如要瞭解登入過程中的步驟和使用者體驗,請參閱「運作方式」一文。瞭解個人化按鈕:評論各種條件和 狀態會影響按鈕向使用者顯示的方式。
必要條件
請先完成下列步驟,再將按鈕新增至登入頁面:
按鈕顯示
如要顯示「Sign In With 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 Tap,請移除 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()
來顯示
使用 One Tap 做為第二個替代方法,透過按鈕註冊或登入。
GIS 程式庫會剖析 HTML 文件,找出 ID 屬性設為
g_id_onload
,或包含 g_id_signin
的類別屬性。如果比對符合
元素後,
也在 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
參數加到用戶端程式庫網址並呼叫
google.accounts.id.renderButton
方法,其中 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 Web Token (JWT) 憑證 又稱 ID 權杖 用於使用者瀏覽器,或直接用於登入 代管端點
您選擇接收 JWT 的位置取決於您是否使用 HTML 或 JavaScript 轉譯按鈕,以及是否使用彈出式或重新導向的 UX 模式。
彈出式模式
使用 popup
UX 模式,可在彈出式視窗中執行登入 UX 流程。這通常是對使用者干擾較小的體驗,也是預設的 UX 模式。
使用以下方式算繪按鈕時:
HTML
您可以設定下列任一項目:
data-callback
將 JWT 傳回至回呼處理常式,或data-login_uri
:讓 Google 將 JWT 直接傳送至您的登入資訊 透過 POST 要求建立端點
如果同時設定這兩個值,則 data-callback
的優先順序高於
data-login_uri
。使用回呼時,同時設定這兩個值可能有幫助
以便偵錯
JavaScript
您必須指定 callback
,因為彈出式模式不支援在 JavaScript 中轉譯按鈕時的重新導向。如果設定此屬性,則系統會忽略 login_uri
。
請參閱處理傳回的憑證回應,進一步瞭解如何解碼 JS 回呼處理常式中的 JWT。
重新導向模式
使用 redirect
使用者體驗模式透過完整頁面執行登入使用者體驗流程
使用者的瀏覽器,而 Google 會將 JWT 直接傳回至
登入端點。POST 要求。
這對使用者來說通常是較侵入性的體驗,但這項方法被視為最安全的登入方式。
使用下列方式算繪按鈕:
- HTML:可選擇將
data-login_uri
設為登入端點的 URI。 - JavaScript 可選擇將
login_uri
設為登入端點的 URI。
如未提供值,Google 會將 JWT 傳回目前 URI 的 URI 頁面。
您的登入端點 URI
設定 data-login_uri
或 login_uri
時,請使用 HTTPS 和絕對 URI。例如:https://example.com/path
。
只有在開發期間使用 localhost 時,才允許使用 HTTP:http://localhost/path
。
如需 Google 規定和驗證規則的完整說明,請參閱「使用安全的 JavaScript 來源和重新導向 URI」。