2015-08-25 31 views
0

我最近在Bash中編寫了一個Pushbullet Linux命令行客戶端。我想允許用戶通過Oauth授予訪問其Pushbullet帳戶的權限,但我遇到了一些麻煩。有一天,我剛剛爲Google Drive API做了Oauth。它非常簡單,只需要幾行代碼。說實話,Oauth section in the Pushbullet API docs是有點不清楚。Pushbullet Oauth使用Bash和捲曲

讓我知道我知道所需的步驟:用URL應用程序內產生

  • URL應該包括

    1. 發送用戶Pushbullet網站:(REDIRECT_URL指定URL,用戶是重新CLIENT_ID和REDIRECT_URL -directed到授權訪問Pushbullet後,除了RESPONSE_TYPE,或者令牌或代碼)
    2. 用戶授予或拒絕訪問他們的帳戶Pushbullet
    3. 如果訪問被許可,用戶被髮送到REDIRECT_URL
    4. 客戶必須獲得嵌入REDIRECT_URL中的access_token然後追加到的access_token未來所有的請求

    關於是否正確的聲音?

    我的腳本在瀏覽器中成功加載認證URL,但是當我點擊「批准」時,出現以下錯誤:The param 'redirect_uri' has an invalid value。我使用了Pushbullet設置的「客戶端」部分中列出的redirect_uri。所以,這: https://www.pushbullet.com/login-success/access_token=<access token>&response_type=token&scope=everything

    我使用正確的網址嗎?這是一個命令行客戶端,我沒有它的域名。不過這應該不重要,對嗎? Oauth總是需要通過瀏覽器進行身份驗證,還是可以通過某種Web服務調用完成(這是GDrive API的工作方式)?理想情況下,我會捲曲處理所有內容,而不必擔心加載Web瀏覽器。

  • 回答

    0

    嗯,我甚至做了一個圖表,但我想文檔仍然需要一些工作。如果您有任何建議,請告訴我!

    所以,如果你想使用「客戶端」流,你應該使用https://www.pushbullet.com/login-successredirect_uri這意味着你的authorize_url看起來應該像https://www.pushbullet.com/authorize?client_id=YW7uItOzxPFx8vJ4&redirect_uri=https%3A%2F%2Fwww.pushbullet.com%2Flogin-success&response_type=token注意,因爲這是HTTP,你必須來urlencode是REDIRECT_URI因爲我已經貼在這裏。如果您仍想了解,這是一個無效的REDIRECT_URI,試試這個頁面上您客戶的REDIRECT_URI設置爲https://www.pushbullet.com/login-successhttps://www.pushbullet.com/#settings/clients

    我不知道你所說的https://www.pushbullet.com/login-success/access_token=<access token>&response_type=token&scope=everything是什麼意思。也許你的意思是https://www.pushbullet.com/login-success?access_token=<access token>&response_type=token&scope=everything,但我認爲沒有必要將這些參數放在redirect_uri上。

    我在這裏可以想到的一件事是,如果我允許https://www.pushbullet.com/login-success爲所有客戶端工作,無論他們的redirect_uri設置爲什麼,這可能會使這更容易。讓我知道什麼是不明確的,所以我可以修復它。

    我還沒有使用您正在討論的特定Google OAuth,但是我對谷歌oauth的經驗總的來說是我使用過的最爲複雜和難以使用的OAuth實現。你能否給我一個你正在引用的鏈接的鏈接,這樣我就可以看到他們如何使他們的OAuth更容易使用?

    +0

    至於我的問題:我仍然無法讓OAuth使用'response_type = token'。我收到關於無效響應類型的錯誤。我使用了你建議的redirect_uri。但是,我能夠使用'response_type = code'來處理問題,所以解決了問題。 –

    +0

    我必須承認我對這個東西相當陌生,所以我的困惑可能是由於缺乏經驗而不是糟糕的文檔。順便說一句,你製作的圖表很好,很清楚。說實話,Google的文檔並不好。我發現爲Drive更輕鬆地實施OAuth,因爲這裏有很多關於Drive API的問題。例如,谷歌在解釋範圍方面做得不好。 以下是Google'e Drive REST API文檔的鏈接(並按照其中包含的客戶端鏈接):https://developers.google.com/drive/web/about-auth –