我正在使用firebase在Android中开发一个应用程序。我已经创建了登录活动,其中我有一个方法可以在用户通过凭据时记录用户(用户创建已经完成)。然后我将保存收到的令牌在onAuthenticated回调,以便我可以在下次打开应用程序时自动登录用户,而无需输入凭据。
这是代码
private void loginWithPassword(final String email, String password) {
progressDialog.show();
FirebaseConnections.getConnection().authWithPassword(email, password,
new Firebase.AuthResultHandler() {
@Override
public void onAuthenticated(AuthData authData) {
// Authentication just completed successfully :)
IGStorePreference.getInstance().saveString(Constants.TOKEN, authData.getToken());
IGStorePreference.getInstance().saveString(Constants.UID, authData.getUid());
IGStorePreference.getInstance().saveString(Constants.PROVIDER, authData.getProvider());
dismissProgressDialog();
}
@Override
public void onAuthenticationError(FirebaseError error) {
// Something went wrong :(
dismissProgressDialog();
Snackbar.make(parentView, error.getMessage(), Snackbar.LENGTH_LONG).show();
}
});
}
然后我检查onCreate我们是否有令牌令牌来记录用户
private void checkIfTokenExistAndLogin() {
if (IGStorePreference.getInstance().isPrefExists(Constants.TOKEN)) {
progressDialog.show();
String provider = IGStorePreference.getInstance().getString(Constants.PROVIDER);
String token = IGStorePreference.getInstance().getString(Constants.TOKEN);
FirebaseConnections.getConnection().authWithOAuthToken(provider, token, new Firebase.AuthResultHandler() {
@Override
public void onAuthenticated(AuthData authData) {
IGStorePreference.getInstance().saveString(Constants.TOKEN, authData.getToken());
IGStorePreference.getInstance().saveString(Constants.UID, authData.getUid());
IGStorePreference.getInstance().saveString(Constants.PROVIDER, authData.getProvider());
dismissProgressDialog();
}
@Override
public void onAuthenticationError(FirebaseError firebaseError) {
dismissProgressDialog();
Snackbar.make(parentView, firebaseError.getMessage(), Snackbar.LENGTH_LONG).show();
}
});
}
}
但问题是我在使用authWithOAuthToken登录用户时遇到错误。请帮助我错过。
这是我每次都收到的错误。
FirebaseError:提供的身份验证凭据无效。
答案 0 :(得分:1)
authWithOAuthToken用于登录社交提供商。例如,用户使用Google登录并获取从Google返回的OAuth令牌。然后,应用程序通过authWithOAuthToken将此OAuth令牌发送到Firebase auth服务器。用户可以在服务器验证OAuth令牌后登录。
在您的情况下,用户使用电子邮件/密码登录。您收到的令牌是Firebase身份验证服务器颁发的Firebase身份验证令牌,而不是社交提供商发布的OAuth令牌。