PayPalログイン認証の導入方法

実装概要

APIエンドポイント

Authorization エンドポイント:

本番: GET

https://www.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize

Sandbox: GET

https://www.sandbox.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize

Tokenservice エンドポイント:

本番: POST

https://api.paypal.com/v1/identity/openidconnect/tokenservice

Sandbox: POST

https://api.sandbox.paypal.com/v1/identity/openidconnect/tokenservice

Userinfo エンドポイント:

本番: GET

https://api.paypal.com/v1/identity/openidconnect/userinfo/?schema=openid

Sandbox: GET

https://api.sandbox.paypal.com/v1/identity/openidconnect/userinfo/?schema=openid

Appを登録する

  1. https://developer.paypal.com にログインし、画面上部のDashboardをクリックします。
  2. My Apps画面でCreate Appをクリックします。
  3. Create New App画面で, App name(ログイン時に表示される)を入力します。
  4. Create Appをクリックします。
  5. App画面の右上でSandboxおよびLiveをクリックし、LIVE APP SETTINGS内のReturn URLを指定し、Log in with PayPalをチェックします。
  6. Advanced optionsをクリックし、取得する情報を選択する。

情報共有の同意を得る

Log in with PayPalボタンをクリックした際に、ユーザをログイン画面に誘導します。ユーザが情報の共有に同意すると、貴社にauthorizationコードを渡します。

サンプルリクエスト:

https://www.sandbox.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize
  ?client_id=<Client-Id>
  &response_type=code
  &scope=openid+profile+email+address
    +https%3A%2F%2Furi.paypal.com%2Fservices%2Fexpresscheckout
  &redirect_uri=http://example.com/myapp/return.php
  

サンプルレスポンス:

https://www.sandbox.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize
  ?client_id=<Client-Id>
  &response_type=code
  &scope=openid+profile+email+address
    +https%3A%2F%2Furi.paypal.com%2Fservices%2Fexpresscheckout
  &redirect_uri=http://example.com/myapp/return.php
  

アクセストークンを取得する

authorizationコードをtokenserviceエンドポイントに送信し、accessトークンを取得します。

サンプルリクエスト:

curl -v https://api.sandbox.paypal.com/v1/identity/openidconnect/tokenservice \
-u "<Client-Id>:<Secret>" \
-d "grant_type=authorization_code
    &code=<Authorization-Code>
  

サンプルレスポンス:

{
  "token_type": "Bearer",
  "expires_in": "900",
  "refresh_token": "<Refresh-Token>",
  "access_token": "<Access-Token>"
}
  

ユーザー情報を取得する

accessトークンをuserinfoエンドポイントに送信し、ユーザの情報を取得します。

サンプルリクエスト:

curl -v https://api.sandbox.paypal.com/v1/identity/openidconnect/userinfo/?schema=openid \
-H "Content-Type:application/json" \
-H "Authorization: Bearer <Access-Token>"
  

サンプルレスポンス:

{
  "name": "Peter Pepper",
  "given_name": "Peter",
  "family_name": "Pepper",
  "email": "ppuser@example.com"
}