Firebase authWithOauthToken 不工作
Firebase authWithOauthToken is not working
我正在 Android 中使用 firebase.I 开发一个应用程序已经创建了登录 activity 我有一个方法可以在用户通过凭据时登录(用户创建已经完成完成)。然后我将保存在 onAuthenticated 回调中收到的令牌,以便下次 he/she 打开应用程序时我可以自动登录用户而不要求输入凭据。
这是代码
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 我们是否有 token token 来登录用户
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.Please 登录用户时遇到错误,帮助解决我所缺少的问题。
这是我每次收到的错误。
FirebaseError: Invalid authentication credentials provided.
authWithOAuthToken 用于通过社交提供商登录。例如,用户使用 Google 登录并获取从 Google 返回的 OAuth 令牌。然后应用程序通过 authWithOAuthToken 将此 OAuth 令牌发送到 Firebase 身份验证服务器。用户可以在服务器验证 OAuth 令牌后登录。
在您的例子中,用户使用 email/password 登录。您收到的令牌是 Firebase 身份验证服务器颁发的 Firebase 身份验证令牌,而不是社交提供商颁发的 OAuth 令牌。
我正在 Android 中使用 firebase.I 开发一个应用程序已经创建了登录 activity 我有一个方法可以在用户通过凭据时登录(用户创建已经完成完成)。然后我将保存在 onAuthenticated 回调中收到的令牌,以便下次 he/she 打开应用程序时我可以自动登录用户而不要求输入凭据。
这是代码
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 我们是否有 token token 来登录用户
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.Please 登录用户时遇到错误,帮助解决我所缺少的问题。
这是我每次收到的错误。
FirebaseError: Invalid authentication credentials provided.
authWithOAuthToken 用于通过社交提供商登录。例如,用户使用 Google 登录并获取从 Google 返回的 OAuth 令牌。然后应用程序通过 authWithOAuthToken 将此 OAuth 令牌发送到 Firebase 身份验证服务器。用户可以在服务器验证 OAuth 令牌后登录。
在您的例子中,用户使用 email/password 登录。您收到的令牌是 Firebase 身份验证服务器颁发的 Firebase 身份验证令牌,而不是社交提供商颁发的 OAuth 令牌。