日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python的flask实现第三方登录怎么写_关于qq和新浪微博的第三方登陆|python|flask

發布時間:2023/12/13 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的flask实现第三方登录怎么写_关于qq和新浪微博的第三方登陆|python|flask 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前些日子研究了一下qq和新浪微博的第三方登陸的東西,發現其實難度并不大。來給大家分享一下我的經驗和流程。

不論是qq還是新浪微博的第三方登陸都是用了Oauth2.0授權流程,唯一不同的是qq多了一個openid的獲取,多了一步。

先介紹一下Oauth2.0的大致授權流程。在授權過程中大致有三個對象。一個是服務提供方(第三方網站)、一個是用戶(將資源放在服務提供方存放的對象)、還有一個就是客戶端(向服務提供放請求用戶資源的對象)。首先,客戶端向服務提供方發起請求,請求服務提供方的一個臨時令牌,這個臨時令牌是進行下一步的基礎,服務提供方先要驗證一下客戶端的身份,驗證成功后會給客戶端所要的臨時令牌。接下來客戶端會引導用戶進行授權操作,用戶進入服務提供方提供的頁面,完成授權以后服務提供方會給客戶端一個訪問令牌并調轉回客戶端的網頁。通過訪問令牌,客戶端就可以獲得用戶在服務提供方上的若干權限。

了解了Oauth2.0的授權機制,下面就開始介紹實例。顯示新浪微博的。

首先,要成為新浪微博的開發者,http://open.weibo.com/wiki/%E6%96%B0%E6%89%8B%E6%8C%87%E5%8D%97,這是申請開發者的大致流程,申請完成后就可以創建應用,然后新浪微博就會給你你的app_id和app_secret,這兩樣東西就是你的網站認證新浪微博的憑證,根據這個憑證你才能引導用戶到新浪微博的授權界面。

第一步,在你的網站上引導用戶進入授權界面,實際上這一步包含了你的網站向服務提供方申請臨時令牌和用戶完成授權這兩步。引導用戶進入https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&response_type=code&redirect_url=YOUR_REGISTERDE_REDIRECT_URL

上面的紅字部分是要自己填入的信息。其他地方不用改動。用戶輸入用戶名和密碼,完成授權,之后會跳轉到YOUR_REGISTERDE_REDIRECT_URL,并且會在url上多出”code=~~~~~~“的信息,這些是可以在后臺通過GET方法獲得的。

第二步,通過第一步的code向服務提供方換取訪問令牌,在新浪微博上就是access_token。在后臺完成向https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_url=YOUR_REDIRECT_URL&code=CODE的請求。

以上的紅字是自己要填入的。通過上面的網址實際上是在用GET方法發起請求。響應會發回一個json字典,其中就有我們想要的access_token,字典中還有其他項,包括用戶id,access_token的有效時間(秒為單位)等信息。

實際上完成上邊的兩步后,我們就已經獲得了我們想要的權限了。http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI,通過這個網址上的信息,再加上我們完成上邊兩步后所獲的的東西,我們就可以實現想要的目的了。

1 #-*-coding:utf8 -*-

2 importurllib3 importurllib24 importjson5 data1 = {"client_id":"","client_secret":""}6 data1 =urllib.urlencode(data1)7 url1 = "https://api.weibo.com/oauth2/access_token?grant_type=authorization_code&redirect_uri=&code=854e96627e23b6a31fea50cd242a681e"

8 #上邊url1中的code是我手動在瀏覽器上運行授權url獲取的,實際開發中是可以在網站后臺獲取的,就不用人工的去獲取了

9

10

11 req1 =urllib2.Request(url1,data1)12 response1 =urllib2.urlopen(req1)

13 #這里返回的是一個json格式的數據,通過解析可以從中獲取access_token14 response1 =json.loads(response1.read())15 access_token = response1['access_token']16 #print(access_token)1718

19 #一下是一個例子,以用戶的名義發一條新浪微博

20 url2 = "https://api.weibo.com/2/statuses/update.json"

21 status = u"這是用來測試的,請直接忽略!"

22 status = status.encode("utf8")23 data2 ={"source":"","access_token":access_token,"status":status}24 #這里要注意source其實就是app_id

25 data2 =urllib.urlencode(data2)26 req2 =urllib2.Request(url2,data2)27 response2 =urllib2.urlopen(req2)28 response2=json.loads(response2.read())29 print(response2)30 #這里用來獲取響應信息

下面介紹一下qq的流程,熟悉了新浪微博的授權流程,qq的流程就要好理解的多。qq的官方文檔寫得要比新浪微博的清楚明了的多,我就借用一下qq的文檔。

開始下面操作之前,你要去qq那里申請開發者許可,并申請要開發的網站或者應用以得到client_id和client_secret,還有你的redirect_url

第一步,請求臨時令牌,并引導用戶授權。

url:https://graph.qq.com/oauth2.0/authorize

method:GET

這一步的重點在獲取code。

第二步,請求訪問令牌access_token

url:https://graph.qq.com/oauth2.0/access_token

method:GET

這一步的重點在于獲得access_token

第三步,獲得open_id,這是qq與新浪微博所不同的,也是多了這一步。

url:https://graph.qq.com/oauth2.0/me

method:GET

完成了這一步就已經獲得了所有要用到的參數,這樣就可以完成我想要的所有權限了。

#-*-coding:utf8-*-

importurllibimporturllib2importjson

response_type= "code"client_id= ""client_secret= ""redirect_uri= ""#以上的信息是要自己去申請開發網站時給開發者分配的

url_code= "authorization code"url1= "https://graph.qq.com/oauth2.0/token"url1= url1+"?grant_type=authorization_code&"+\"client_id="+client_id+\"&client_secret="+client_secret+\"&code=5CB3DB81F0718CE44ADD33A78F53E4A0"+\"&redirect_uri="+redirect_uri

#上面的code是我自己現在瀏覽器上手動完成第一步得到的,如果能在服務器上的話,是可以在后臺完成對code的獲取的,就不用這么麻煩了

req1=urllib2.Request(url1)

response1=urllib2.urlopen(req1)

m=((response1.read()).split('&'))[0]

access_token=(m.split('='))[1]#print access_token

#這里由于返回的是一個字符串,所以對返回的字符串操作,從中獲取access_token

url2="https://graph.qq.com/oauth2.0/me"url2=url2+"?access_token="+access_token

req2=urllib2.Request(url2)

response2=urllib2.urlopen(req2)

dic=(response2.read())[10:-3]

ajson=json.loads(dic)

openid=ajson['openid']

#這里返回的是一個json字典,所以可以通過json模塊解析其中的信息,以獲得openid

#一下是一個例子,用來獲取用戶的基本信息

url3="https://graph.qq.com/user/get_user_info?"+\"access_token="+access_token+\"&oauth_consumer_key="+client_id+\"&openid="+openid

req3=urllib2.Request(url3)

response3=urllib2.urlopen(req3)#data_dic=json.loads(response3.read())

print (response3.read()).encode('GB2312')

總結

以上是生活随笔為你收集整理的python的flask实现第三方登录怎么写_关于qq和新浪微博的第三方登陆|python|flask的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。