2017-04-25 46 views
9

我想製作一個小應用程序,從Paypal獲取一些帳戶信息並在HTML頁面中顯示。我單獨使用HTML/CSS和Javascript,我不喜歡在服務器上運行授權流程以獲取安全隱患。我不想讓服務器上的令牌。如何使用OAuth通過Javascript連接到PayPal API?

我有一個工作設置,現在使用Paypal提供的OAuth code grant flow(更多here),但如上所述,我想將服務器從圖片中刪除。

在我剛剛引用的頁面中描述了一些方法,但沒有一個似乎暗示可能存在隱式授權。

是否可以使用Paypal與OAuth隱式授權或類似的東西?

(目前的答案是採取代碼授權流程,這並不是我要求的,我知道存在一個,但在這種情況下使用它是不好的,所以請只回答如果你知道一個方法而不需要提供的OAuth祕密令牌給客戶端。)

+0

當然這更多鈔票用純JS。沒有任何「服務器端」。你檢查過這個嗎? https://developer.paypal.com/docs/integration/direct/make-your-first-call/#get-an-access-token 有什麼你不明白的? – k1r0s

+0

什麼需要我的Javascript應用程序從用戶本身詢問用戶名和密碼。這不是我想要遵循的流程。他們應該在OAuth端點輸入它,而不是在我的應用程序中。 @ k1r0s – Jham

+0

是的,然後 - >(從paypal文檔粘貼)'在用戶同意後,PayPal將用戶重定向(HTTP 302)到返回URL並附加一個授權代碼到URL。使用授權碼獲取刷新令牌和初始訪問令牌。' – k1r0s

回答

0

如果有人不明白什麼是/是如何工作的Implicit grant

當然這是更多鈔票與普通的JavaScript ,但不推薦。貝寶端點提供身份驗證令牌:

https://developer.paypal.com/docs/integration/direct/make-your-first-call/#get-an-access-token

Also you will need to obtain user's consent.。執行請求時,您應該提供redirect_uri param與您的webapp url。通常開發人員傾向於將返回的值存儲在接收來自貝寶的響應的服務器腳本上。但它不是必要的,因爲你可以閱讀包含所有參數的JavaScript全局變量location

Here is an overview of how the OAuth 2.0 auth flow works:

How PayPal uses OAuth 2.0

編輯:

爲了實現這一點,你需要做以下步驟:

變量:

  • APP_CLIENT_ID - >您的應用程序的CLIENT_ID
  • APP_SECRET - >您的應用程序的密碼
  • APP_RETURN_URL - 您的應用程序>默認必須將端點等於redirect_uri
  • OPEN_ID - >返回代碼這允許爲特定客戶創建令牌,也從用戶檢索信息

假設您已經在開發人員中創建了一個APP。貝寶網站獲得「client_id」和「祕密」,以建立一個網址,將用戶重定向到PayPal登錄表單。

  1. 重定向你的客戶:

https://www.[sandbox.]paypal.com/signin/authorize?client_id=APP_CLIENT_ID&response_type=token&scope=openid&redirect_uri=APP_RETURN_URL

  • 客戶將登錄其賬戶併產生openid,這將被送回您的應用程序通過http:302重定向到redirect_uri這應該是你的應用程序。
  • APP_RETURN_URL?代碼= OPEN_ID &範圍=的OpenID

  • 回在你的應用可以使用該代碼來執行請求,以創建令牌..和高達你:
  • 你能夠檢索從用戶配置文件數據,如地址,電話..

    request: curl -v https://api.sandbox.paypal.com/v1/oauth2/token -H「Accept:application/json」-H「Accept-Language:en_US」-H「Authorization:Bearer OPEN_ID」-u「APP_CLIENT_ID:APP_SECRET」-d「grant_type = client_credentials」

    響應: { 「範圍」: 「https://uri.paypal.com/services/identity/proxyclienthttps://uri.paypal.com/services/subscriptionshttps://api.paypal.com/v1/payments/ * https://api.paypal.com/v1/vault/credit-cardhttps://uri.paypal.com/services/applications/webhooks的OpenID https://uri.paypal.com/payments/payoutshttps://api.paypal.com/v1/vault/credit-card/ * https://uri.paypal.com/services/identity/grantdelegation。」, 「隨機數」: 「2017-05-05T14:33:28Z488Zx8aUM1aSVo_wpq8IOecfccJMHptR1PVO2OpWcbA」, 「的access_token」:「A21AAHZCMP5vBuLMzz2m78DJGZhhpmu854amEVEO5WOavfk1GlNl_gmjSi01_69tJLRi5N_6pT-3GpRqZ81_pD1qKIAGANHMQ 「,」token_type「:」承載者「,」app_id「:」APP-80W284485P519543T「,」expires_in「:32400}

  • 那麼你可以遵循這樣的:https://developer.paypal.com/docs/integration/direct/make-your-first-call/#make-an-api-call
  • +0

    第一個身份驗證不是OAuth。它要求應用程序自己詢問用戶的用戶名和密碼,這是你真正不想做的事情。你的答案的第二部分是代碼授權流程,它需要一個服務器,這在我的問題中顯然不是我想要的。該文檔充其量是不明確的,在其他情況下顯然是錯誤的。 – Jham

    +1

    感謝您的時間。 – Jham

    +0

    我甚至不認爲你需要服務器,rly:\ – k1r0s