google oauth
2022 06更新
<html>
<body>
<script src="https://accounts.google.com/gsi/client" async defer></script>
<div id="g_id_onload"
data-client_id=""
data-callback="handleCredentialResponse">
</div>
<div class="g_id_signin" data-type="standard"></div>
</body>
<script>
function handleCredentialResponse(e){
console.log(e)
}
</script>
</html>如果出現網域不再許可範圍內記得加入以下,並且加入沒有 port 的網域
https://console.cloud.google.com/apis/credentials/oauthclient/

1.先到dev console申請帳號和註冊應用程式 https://console.developers.google.com/project/_/apiui/apis/library
2.到api管理員-->憑證-->已授權的 JavaScript 來源 ,填入http://localhost:3000 (記得,下面的已授權的重新導向 URI不要填)
3.加入這段到網頁
4.加入meta tag到網頁(後面要改為你自己的client id)
5.直接放入google做好的signin button
6.此時已可正常登入,但我們看不到任何登入後的訊息,所以要加入下面這個function
7.如何登出
8.傳送使用者id到server做認證 (如同官方告知的profile.getId()不安全,所以要用另一個方式)
將剛才那段function改為
之後會在console看到如下
9.從client傳送這個給server即可
進階認證
10.但,使用者可能得到你的post位置後,直接傳入此位置一個他人的(id_token),為了避免這樣的情況,我們可以在server端再次傳送id_token給google提供的endpoint做認證
使用get方式傳給上述地址,而把id_token改為你要傳的id_token即可
12.把我們剛才從網頁console下來的id_token直接加在上面的網址後然後貼到瀏覽器進入該網址
如token正確會得到如下
如錯誤會得到如下
最後再檢查上面的aud是否與你自己在google dev console註冊到的用戶端 ID相同即可
範例:
另外google提供的Google API Client Library
(有興趣可參考)
https://developers.google.com/api-client-library/javascript/dev/dev_jscript#setting-credentials
參考至: https://developers.google.com/identity/sign-in/web/sign-in#before_you_begin
Last updated
Was this helpful?