无法在firebase身份验证中使用自定义令牌登录

时间:2017-02-15 08:20:56

标签: android firebase firebase-authentication jwt

我在Android应用程序中生成自定义jwt令牌,并使用firebase signinwithcustomtoken()登录。令牌中的用户ID是手机号码。我正在根据firebase文档中提供的标准创建自定义令牌。但我仍然得到FirebaseAuthInvalidCredentialsException:自定义令牌格式不正确'。

 @OnClick(R.id.sign_in_button)
public void Logingin_function()  {

try{

   // Map<String,Object> claims = new HashMap<String,Object>();

    String mobNumber = mobileNoEntry.getText().toString();
final String issuer = "firebase-adminsdk-icjsk@buddy-plans.iam.gserviceaccount.com";
final String sub = "firebase-adminsdk-icjsk@buddy-plans.iam.gserviceaccount.com";
final String aud = "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit";
//final long iat = System.currentTimeMillis() / 1000L;
//final long exp = iat + 60L;

long timeMillis = System.currentTimeMillis();
long timeSeconds = TimeUnit.MILLISECONDS.toSeconds(timeMillis);
long expSeconds = timeSeconds + 60L;




//  claims.put("uid",mobNumber);


    //Key key = MacProvider.generateKey();

    KeyPairGenerator keyGen = null;

        keyGen = KeyPairGenerator.getInstance("RSA");
    keyGen.initialize(512);
    KeyPair pair = keyGen.generateKeyPair();
    PrivateKey priv = pair.getPrivate();


    compactJws = Jwts.builder()
            .claim("iss", issuer)
            .claim("aud",aud)
            .claim("alg","RS256")
            .claim("iat", timeSeconds)
            .claim("exp", expSeconds)
            .claim("uid",mobNumber)
            .setSubject(sub)
            .signWith(SignatureAlgorithm.RS256, priv)
            .compact();



  mAuth.signInWithCustomToken(compactJws).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
      @Override
      public void onComplete(@NonNull Task<AuthResult> task) {

          if(task.isComplete())
              Log.d(TAG, "Signed in with custom token");

          else
              Log.d(TAG, "Cannot Sign in with custom token");

      }



  });
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}

}

我面临的例外:

com.google.firebase.auth.FirebaseAuthInvalidCredentialsException: The custom token format is incorrect. Please check the documentation.

我知道理想情况下我应该在服务器端代码中使用firebase admin sdk。我想根据我的要求处理客户端的所有事情。请帮忙。提前致谢。

0 个答案:

没有答案