2016-07-17 63 views
0

我有一個本地運行的應用程序,使API調用網站(tumblr.com)。這涉及設置一些OAuth憑證;沿途一步需要從服務器指向瀏覽器的回調URL中提取密鑰。因此,我目前擁有的用戶做的是:如何檢測網址回調請求

  1. 打開一個瀏覽器的授權鏈接,提示他們授權的OAuth應用程序在網站上

  2. 點擊通過授權頁面的網站上( 「是的,我讓XXXXX應用訪問與我的帳戶相關的某些信息」)

  3. 點擊Authorize app轉變成表示包括在URL參數本地主機的請求。這意味着tumblr會將瀏覽器重定向到頁面http://localhost/?oauth_token={TOKEN}&oauth_verifier={VERIFIER}#_=_。我認爲這會導致對本地機器發出請求。

  4. 用戶需要將URL中的關鍵參數從瀏覽器的導航欄中分離出來並粘貼到應用程序中。

那麼,有沒有我可以繞過步驟3和4,只是已經應用拿起回調請求,而不是期待用戶複製並從瀏覽器中粘貼的方法嗎?恐怕我不知道如何處理python中的網絡請求。

要清楚,我需要做的是得到{VERIFIER}字符串。

+0

嘿,你介意點3嗎? –

+0

@Loïc我澄清了第3點。回調URL實際上是一個tumblr重定向,除了不向另一個服務器發出請求外,它應該向本地計算機發出請求,因爲腳本在本地運行。 –

回答

1

好第一件事首先,HTTP請求,一個良好的Python模塊requests

http://docs.python-requests.org/en/master/

然後,您的應用程序提供了一個回調地址tumblr使tumblr可以告訴你的應用程序客戶端信息,或登錄錯誤。

現在,你的觀點3不清楚。 「點擊授權應用程序向本地主機發出請求」

實際上,爲用戶點擊「授權應用程序」向tumblr發出請求,表示他接受。 然後tumblr向您的回傳網址發送請求,通過相關信息。

回調URL可能應該是您的服務器地址,也必須有一個腳本監聽tumblr,這將給你的特殊的參數來調用他們的API ...

另外:

所以當用戶點擊「授權應用程序」時,有一個請求tumblr,它將用戶重定向到回調URL(添加oauth標記和驗證器)。

現在,顯然,你不能要求每個用戶在他們的計算機上運行http服務器。

所以你必須設置回調url到你的服務器。

所以,如果你把它設置爲「myserver。COM/tumblr」的情況下,用戶會被重定向到您的網頁,你會得到你的服務器上,併爲用戶會話中,oauths令牌和驗證。

和...

假設你的應用程序是客戶端只我說有兩種選擇。

要麼有你的用戶手動輸入他們的API密鑰。

或任嵌入Web服務器到應用程序中。

我在嵌入式網絡服務器的情況下,我會建議燒瓶的簡單性。 只需讓您的Web服務器在給定端口上偵聽並將回調URL設置爲該服務器:端口即可。

這樣你就可以直接獲得客戶令牌。

+0

沒有第二個服務器,所有的監聽都應該發生在本地計算機上 –

+0

回答編輯,但是請告訴我,你沒有網絡服務器嗎? –

+0

不,因爲該應用程序實際上更像是一個工具包,它不應該依賴於第三方 –