2016-12-09 12 views
0

Java、Google Web Toolkit、Google Cloud Datastoreを使用して基本的なアプリケーションを作成しました。認証のために私はFirebaseを使用しています。フロントエンドがRPC呼び出しを行うと、バックエンドがそれを検証できるようにユーザートークンを渡します。Firebaseバックエンド認証の処理方法

VerifyTokenクラスをバックエンドに作成して、ユーザートークンを受け取り、Firebase verifyIdTokenを呼び出して確認し、ユーザーのUIDを返します。ユーザートークンが正常に検証されていない場合は0を返します。 RPC呼び出しを受け取るクラスは、uidを使用してデータを取得し、RPC応答でそれを返します。

ここでは、現在のコードです:

public class VerifyToken 
{ 
    public String verify(String token) 
    { 
     String uid = "0"; 

     try 
     { 
      //Connect to Firebase 
      FirebaseOptions options = new FirebaseOptions.Builder() 
         .setServiceAccount(new FileInputStream("firebaseJsonHere")) 
         .setDatabaseUrl("dbUrlHere") 
         .build(); 

      FirebaseApp.initializeApp(options); 

      //Verify the token 

      FirebaseAuth.getInstance().verifyIdToken(token) 
      .addOnSuccessListener(new OnSuccessListener<FirebaseToken>() { 
       @Override 
       public void onSuccess(FirebaseToken decodedToken) { 
        String uid = decodedToken.getUid(); 
        System.out.println("uid decoded = " + uid); 
       } 
      }).addOnFailureListener(new OnFailureListener() { 
       @Override 
       public void onFailure(Exception e) 
       { 
        System.out.println(e.getMessage()); 
       } 
      });   

     }catch(Exception e){ 
      System.out.println("Exception: " + e.getMessage()); 
     } 

     //Return the uid or 0 if not validated 
     return uid; 
    } 
} 

誰かが私がSuccessListenerから結果を取得する方法を知っている可能性がありますが。私は、uidが正常にデコードされていることがわかります。結果を戻す方法がわからないだけです。

多くのおかげで、 エド

+0

ありがとう、ここで答えが見つかりました:[http://stackoverflow.com/questions/38418472/how-do-i-secure-my-google-cloud-endpoints-apis-with-firebase-token-verification/ 38423163#38423163](http://stackoverflow.com/questions/38418472/how-do-i-secure-my-google-cloud-endpoints-apis-with-firebase-token-verification/38423163#38423163) –

答えて

0

は、私はあなたが行うことができますね。

public String verify(String token) 
{ 
    String uid = "0"; 

    try 
    { 
     //Connect to Firebase 
     FirebaseOptions options = new FirebaseOptions.Builder() 
       .setServiceAccount(new FileInputStream("firebaseJsonHere")) 
       .setDatabaseUrl("dbUrlHere") 
       .build(); 

     FirebaseApp.initializeApp(options); 

     //Verify the token 

     FirebaseToken decodedToken = FirebaseAuth.getInstance().verifyIdToken(token).getResult(); 
     uid = decodedToken.getUid(); 

    }catch(Exception e){ 
     System.out.println("Exception: " + e.getMessage()); 
    } 

    //Return the uid or 0 if not validated 
    return uid; 
} 

は、私が代わりに私には良く聞こえるnullに設定する、しかしString uid = "0";の巨大なファンではありません。

関連する問題