GAE's Users Service

GAE's Users Service

開發GAE application時可能會有整合Google帳號的需求,這時我們可以使用Users Service。

 

首先將google.appengine.api.users import進來。

from google.appengine.api import users

 

呼叫users.get_current_user()取得當前的使用者。

user = users.get_current_user()

 

若是有取到當前的使用者,代表目前使用者已是登入的狀態,我們可以取得使用者資訊做些呈現 (可參閱User 類別這篇)。

 

像是呼叫nickname方法取得當前使用者的暱稱。

nickName = user.nickname()

 

呼叫email方法取得當前使用者的Email位置。

email = user.email()

 

或者是呼叫user_id方法取得當前使用者的識別ID。

userID = user.user_id()

 

若需要實現登出的動作,則我們可以呼叫create_logout_url方法取得登出動作的網址,。

users.create_logout_url("/")

 

而要是使用者尚未登入,這邊我們無法取得當前的使用者,這時可以透過users.create_login_url方法取得登入的頁面位置,呼叫users.create_login_url的同時可以指定登入成功所要返回的頁面位置。

 

users.create_login_url(self.request.uri)

 

登入的頁面位置取得後,視需求可以做些不同的處理,像是讓使用者透過點擊連結去做登入,或是直接將頁面直接導過去。

self.redirect(users.create_login_url(self.request.uri))

 

總結下來整個Users Service的撰寫應該會是像下面這樣的處理方式:

    	user = users.get_current_user()

    	if user:
    		#User Logined
    	else:
		#User Need Login => Redirect to login page
    		self.redirect(users.create_login_url(self.request.uri))

 

最後這邊實際來看個完整的範例程式:

 

 

本地運行起來可以看到像下面這樣簡易的登入畫面,按下Login按鈕繼續。

image

 

會看到登入成功後的樣子,這邊的範例是將NickName與登出功能秀出來。

image

 

本地測試時帳號怎樣輸入都會成功登入,因為只是讓我們可以很容易的在本地進行測試,不會整合Google的帳號服務,也不會進行驗證的動作。但若是實際將其佈署到Cloud上,就會與Google帳號服務整合,所以可以看到登入的畫面會改成Google帳號的登入頁面。

image

 

登入後的動作一樣正常運作。

image

 

Link