国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

從零開始用 Flask 搭建一個網(wǎng)站(四)

CarterLi / 2235人閱讀

摘要:前言從零開始用搭建一個網(wǎng)站三介紹了網(wǎng)頁前端與后端前端與前端之間數(shù)據(jù)的交流。作者極光為極光團(tuán)隊(duì)賬號,歡迎關(guān)注原文從零開始用搭建一個網(wǎng)站四知乎專欄極光日報(bào)

前言

從零開始用 Flask 搭建一個網(wǎng)站(三) 介紹了網(wǎng)頁前端與后端、前端與前端之間數(shù)據(jù)的交流。本節(jié)主要介紹一下如何應(yīng)用 Flask-OAuthlib, 使用 Flask-OAuthlib 就可以輕松地請求第三方應(yīng)用提供的 API 。 GitHub 上 example 給出了一些如何使用的簡單例子,但是就實(shí)際運(yùn)用來說還有需要注意的地方。

安裝與初始化

在終端中使用命令:

pip install Flask-OAuthlib

或者:

easy_install Flask-OAuthlib

就可以完成自動安裝。在項(xiàng)目中初始化 oauth 也是比較簡單的, 以 QQ 為例:

from flask_oauthlib.client import OAuth

app = Flask(__name__)
oauth = OAuth(app)

qq = oauth.remote_app(   
   "qq",    
  consumer_key=QQ_APP_ID,    
  consumer_secret=QQ_APP_KEY,    
  base_url="https://graph.qq.com",    
  request_token_url=None,    
  request_token_params={"scope": "get_user_info"},    
  access_token_url="/oauth2.0/token",    
  authorize_url="/oauth2.0/authorize",
)

需要注意的是 consumer_key 以及 consumer_secret ,這兩個要替換成自己在第三方提供者中申請的應(yīng)用的 App_ID 以及 App_Key 。如果是生產(chǎn)環(huán)境,通常要把這兩個參數(shù)放到環(huán)境變量中。其他的參數(shù)值在第三方的開發(fā)者文檔中都有提供。另外這個 scope 字段的值表明了在應(yīng)用中你請求的 token 的實(shí)際使用權(quán)限,上面的權(quán)限僅僅是 get_user_info 。這個范圍可以視自己的需求而定。

請求數(shù)據(jù)

首先來介紹一下第三方登錄,在點(diǎn)擊登錄后,登錄按鈕觸發(fā)的視圖函數(shù)如下:

@main.route("/login")
def login():    
    return qq.authorize(callback=url_for("main.authorized", _external=True))

這個 authorize 函數(shù)會發(fā)送一個請求,跳轉(zhuǎn)到第三方登錄界面,用戶登錄完成后,將會回調(diào)傳遞的 Url ,返回一個帶授權(quán) token 的響應(yīng):

@main.route("/login/authorized")
def authorized():    
    resp = qq.authorized_response()    
    if resp is None:        
        return "Access denied: reason=%s error=%s" % (            
            request.args["error_reason"],            
            request.args["error_description"]        
        )    
    session["qq_token"] = (resp["access_token"], "")

這里把 token 存儲在 session 中,方便下次使用。使用 OAuthlib 可以發(fā)起 Http 請求,比如 GET 請求:

respMe = qq.get("/oauth2.0/me", {"access_token": session["qq_token"][0]})

這里傳了一個 access_token 參數(shù),需要注意的是這個 token 是一個元組:(“ token ”, ""),第二個元素為空。在使用這些 Http 請求時(shí),如果沒有帶上 token ,必須使用 oauthlib 提供的 tokengetter 修飾器定義一個返回 token 的函數(shù):

@qq.tokengetter
def get_qq_oauth_token():    
    return session.get("qq_token")

這里返回的 token 也是一個元組,而不是字符串。在定義了獲取 token 的函數(shù)后,就可以不帶 access_token 參數(shù)了, oauthlib 將會自動調(diào)用這個函數(shù)得到 token 。比如:

response = github.get("user")
username = response.data["login"]

如果要在請求中傳遞數(shù)據(jù),可以這樣:

data_dict = {
    "name": "web",             
    "active": True,             
    "events": [                 
        "push",                 
        "commit_comment",                 
        "pull_request",                 
        "issues",                 
        "issue_comment"             
    ],             
    "config": {                
        "url": "http://your webhook",                 
        "content_type": "json"             
    }
}
response = github.post("https://api.github.com/repos/{user}/{repo}/hooks", data=data_dict, format="json")

上面是 github 中創(chuàng)建 Webhook 的示例,在 data 中傳遞了一個字典,這個字典將會被解析為 Json 對象并被保留在請求的 body 中。 OAuthlib 0.9.3 版本除了 GET 請求以外必須攜帶一個 data ,這是一個已知的 bug。這里筆者使用的版本是 0.9.2 。

以上就是關(guān)于 OAuthlib 使用的講解。到此為止,我們一起學(xué)習(xí)了如何從零開始用 Flask 搭建了一個網(wǎng)站,我們的網(wǎng)址是: http://jbox.jiguang.cn/ 一個極光寶盒控制臺,可以用來集成第三方應(yīng)用,并及時(shí)在手機(jī)上收到推送。比如使用使用極光寶盒集成一個 GitHub 應(yīng)用,這樣就可以監(jiān)聽自己以及團(tuán)隊(duì)的倉庫,在別人提交 commit 或者 issue 后,可以及時(shí)反饋到手機(jī)上;也可以是自定義的集成,用于小組之間會議通知,活動通知等等。我們后續(xù)也會推出更多的第三方集成,感謝大家一直以來的支持,我們的源碼在 GitHub 上。

作者: KenChoi - 極光( JPush 為極光團(tuán)隊(duì)賬號,歡迎關(guān)注)

原文:從零開始用 Flask 搭建一個網(wǎng)站(四)

知乎專欄:極光日報(bào)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/8992.html

相關(guān)文章

  • 從零開始 Flask 搭建一個網(wǎng)站(三)

    摘要:從零開始用搭建一個網(wǎng)站二介紹了有關(guān)于數(shù)據(jù)庫的運(yùn)用,接下來我們在完善一下數(shù)據(jù)在前端以及前端到后端之間的交互。在中有和兩個函數(shù),分別是請求成功和失敗的回調(diào)函數(shù)。作者極光為極光團(tuán)隊(duì)賬號,歡迎關(guān)注原文從零開始用搭建一個網(wǎng)站三知乎專欄極光日報(bào) 從零開始用 Flask 搭建一個網(wǎng)站(二) 介紹了有關(guān)于數(shù)據(jù)庫的運(yùn)用,接下來我們在完善一下數(shù)據(jù)在前端以及前端到后端之間的交互。本節(jié)涉及到前端,因此也會講解...

    mykurisu 評論0 收藏0
  • 從零開始 Flask 搭建一個網(wǎng)站(二)

    摘要:從零開始用搭建一個網(wǎng)站一介紹了如何搭建環(huán)境,以及應(yīng)用基本項(xiàng)目結(jié)構(gòu)。我們要搭建的網(wǎng)站是管理第三方集成的控制臺,類似于。我們先定義一個用戶模型然后在文件夾下創(chuàng)建一個文件。 從零開始用 Flask 搭建一個網(wǎng)站(一) 介紹了如何搭建 Python 環(huán)境,以及 Flask 應(yīng)用基本項(xiàng)目結(jié)構(gòu)。我們要搭建的網(wǎng)站是管理第三方集成的控制臺,類似于 Slack。 本篇主要講解數(shù)據(jù)如何在 Flask 應(yīng)用...

    Coly 評論0 收藏0
  • 從零開始搭建論壇(三):Flask框架簡單介紹

    摘要:我們的論壇項(xiàng)目就使用了該框架。此外,麥子學(xué)院也有一個入門視頻教程,一共小時(shí)的視頻教程,涵蓋開發(fā)的方方面面,包括環(huán)境的搭建,語法介紹,項(xiàng)目結(jié)構(gòu)的組織,全球化,單元測試等內(nèi)容。博客地址更多閱讀的機(jī)制三個框架的對比 前面兩篇文章中我們已經(jīng)了解 Web(HTTP)服務(wù)器,Web應(yīng)用程序,Web框架,WSGI這些 Python Web 開發(fā)中的概念。我們知道,Web框架通過將不同Web應(yīng)用程序中...

    Alan 評論0 收藏0
  • 從零開始搭建論壇(一):Web服務(wù)器與Web框架

    摘要:服務(wù)器通過協(xié)議與客戶端通信,因此也被稱為服務(wù)器。本文標(biāo)題為從零開始搭建論壇一服務(wù)器與框架本文鏈接為更多閱讀自己動手開發(fā)網(wǎng)絡(luò)服務(wù)器一自己動手開發(fā)網(wǎng)絡(luò)服務(wù)器二自己動手開發(fā)網(wǎng)絡(luò)服務(wù)器三服務(wù)器網(wǎng)關(guān)接口實(shí)現(xiàn)原理分析最佳實(shí)踐指南應(yīng)用淺談框架編程簡介 之前用 Django 做過一個小的站點(diǎn),感覺Django太過笨重,于是就準(zhǔn)備換一個比較輕量級的 Web 框架來玩玩。Web.py 作者已經(jīng)掛掉,項(xiàng)目好...

    dantezhao 評論0 收藏0
  • 從零開始搭建論壇(二):Web服務(wù)器網(wǎng)關(guān)接口

    摘要:在從零開始搭建論壇一服務(wù)器與框架中我們弄清楚了服務(wù)器應(yīng)用程序框架的概念。框架應(yīng)用生成狀態(tài)碼以及響應(yīng)報(bào)頭,然后將二者傳遞至,等待服務(wù)器保存。添加響應(yīng)頭,狀態(tài)碼返回響應(yīng)信息創(chuàng)建一個服務(wù)器實(shí)例目前支持的成熟服務(wù)器有很多,是相當(dāng)不錯的一個。 在 從零開始搭建論壇(一):Web服務(wù)器與Web框架 中我們弄清楚了Web 服務(wù)器、Web 應(yīng)用程序、Web框架的概念。對于 Python 來說,越來越多...

    Astrian 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<