下方填入自己的 WebService 網址。ex:
2.在系統的登入頁加入一個超連結,填入 上一步的 client id ,要向使用者索取的資源 scope, 以及使用者同意授權後,facebook 要將授權碼 redirect 的位址,我們填入自己的 WebService 位址。
href="https://www.facebook.com/dialog/oauth?
&client_id=1730077280596052
&scope=public_profile,email
&redirect_uri=http://bennu-aws.ddns.net:5000/fb_oauth"
3. 設計一個 WebService 接收 授權碼 code,使用 python Flask 框架。
@app.route("/fb_oauth", methods=["GET"])
def fbOauth():
#接收授權碼
strAuthCode = request.args.get("code", None, type=str)
4.將授權碼回傳給 facebook 換取 token,需要 client_id、client_secret、第3步得到的授權碼、以及第2步使用的 redircet_uri,facebook 就會回傳 token 回來
strAccessTokenUrlTemplate = "https://graph.facebook.com/oauth/access_token?
&client_id=%s
&redirect_uri=%s
&client_secret=%s
&code=%s"
strAccessTokenUrl = strAccessTokenUrlTemplate%
(strFbClientId,
"http://bennu-aws.ddns.net:5000/fb_oauth",
strFbClientSecret,
strAuthCode)
responseToken = urllib.request.urlopen(strAccessTokenUrl)
strToken = responseToken.read().decode(responseToken.headers.get_content_charset())
5.使用 token 取得使用者的資料
responseUserData = urllib.request.urlopen("https://graph.facebook.com/me?
&fields=id,name,email
&" + strToken)
strUserData = responseUserData.read().decode(responseToken.headers.get_content_charset())
dicUserData = json.loads(strUserData)
return (dicUserData["id"], dicUserData["name"], dicUserData["email"])
3. 設計一個 WebService 接收 授權碼 code,使用 python Flask 框架。
@app.route("/fb_oauth", methods=["GET"])
def fbOauth():
#接收授權碼
strAuthCode = request.args.get("code", None, type=str)
4.將授權碼回傳給 facebook 換取 token,需要 client_id、client_secret、第3步得到的授權碼、以及第2步使用的 redircet_uri,facebook 就會回傳 token 回來
strAccessTokenUrlTemplate = "https://graph.facebook.com/oauth/access_token?
&client_id=%s
&redirect_uri=%s
&client_secret=%s
&code=%s"
strAccessTokenUrl = strAccessTokenUrlTemplate%
(strFbClientId,
"http://bennu-aws.ddns.net:5000/fb_oauth",
strFbClientSecret,
strAuthCode)
responseToken = urllib.request.urlopen(strAccessTokenUrl)
strToken = responseToken.read().decode(responseToken.headers.get_content_charset())
5.使用 token 取得使用者的資料
responseUserData = urllib.request.urlopen("https://graph.facebook.com/me?
&fields=id,name,email
&" + strToken)
strUserData = responseUserData.read().decode(responseToken.headers.get_content_charset())
dicUserData = json.loads(strUserData)
return (dicUserData["id"], dicUserData["name"], dicUserData["email"])
沒有留言:
張貼留言