バックエンドサーバーによる認証

バックエンドサーバーと通信するアプリでnow.ggログインを使用する場合、サーバー上で現在サインインしているユーザーを特定する必要がある場合があります。

バックエンドサーバーを使用してサインインしたユーザーを安全に識別するには、以下の手順に従ってください。

  • ユーザがログインに成功した後、ユーザーのIDトークンをHTTPSを使用してサーバーに送信します。
  • サーバー側では、Verify Token APIを使用してIDトークンの完全性を検証し、トークンに含まれるユーザー情報を使用して新しいアカウントを作成するか、セッションを確立します。

警告

  • 変更されたクライアントアプリは、ユーザーになりすますために、任意のユーザーIDをサーバーに送信することができます。したがって、userData.getUserId()メソッドで取得したような単純なユーザーIDをバックエンドサーバーで受け入れてはいけません。
  • その代わりに、検証可能なIDトークンを使用して、サーバー側でログインユーザーのユーザーIDを安全に取得します。

サーバーにIDトークンを送信する

HTTPS POSTリクエストで、バックエンドサーバーのtokensignin APIにIDトークンを送信します:

   HttpClient httpClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost("https://yourbackend.example.com/tokensignin");
  
    try {
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
       nameValuePairs.add(new BasicNameValuePair("idToken", idToken));
       httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

       HttpResponse response = httpClient.execute(httpPost);
       int statusCode = response.getStatusLine().getStatusCode();
       final String responseBody = EntityUtils.toString(response.getEntity());
       Log.i(TAG, "Signed in as: " + responseBody);
     } catch (ClientProtocolException e) {
       Log.e(TAG, "Error sending ID token to backend.", e);
     } catch (IOException e) {
       Log.e(TAG, "Error sending ID token to backend.", e);
     }

IDトークンの完全性を検証する

バックエンドサーバーでHTTPS POSTによりIDトークンを受け取った後、Verify Token APIを使用してトークンの完全性を検証する必要があります。

     
    import requests
     try:
        url = "https://now.gg/accounts/oauth2/v1/verify-token"
        payload={
         "token_type": "id_token",
         "token": ,
         "client_id": 
        }
        headers = {
          'Content-Type': 'application/json'
         }
        response = requests.request("POST", url, headers=headers, data=json.dumps(payload))
         print(response.text)
         #token verified
     except:
         #token not verified
         pass 
     
    var axios = require('axios');
     var config = {
         method: 'post',
         url: 'https://now.gg/accounts/oauth2/v1/verify-token',
         headers: {
             'Content-Type': 'application/json'
         },
         data: {
             "token_type": "id_token",
             "token": < id_token > ,
             "client_id": < your_oauth_client_id >
         }
     };

     axios(config)
         .then(function (response) {
             console.log(JSON.stringify(response.data));
         })
         .catch(function (error) {
             console.log(error);
         });

アカウントまたはセッションの作成

トークンを確認したら、そのユーザーがすでにユーザーデータベースに登録されているかどうかを確認します。

  • ユーザーがデータベースに存在する場合は、そのユーザーの認証セッションを確立します。
  • ユーザーがまだユーザーデータベースに存在しない場合は、IDトークンのペイロードで受け取った情報から新しいユーザー履歴を作成し、そのユーザーのセッションを確立します。

※アプリで新しく作成されたユーザーを検出し、このユーザーをデータベースに保存すると、そのユーザーから必要な追加プロファイル情報を取得できます。

×

ドキュメント改訂版 1.0

テキストがクリップボードにコピーされました。
copyLinkText
ご不明な点がございましたら、お気軽にお問い合わせください。 dev-support@now.gg