要使用getRedirectResult()
方法从 Google OAuth 登录中提取用户数据并将其存储在 Firebase Firestore 中,你可以按照以下步骤进行操作:
- 在你的应用中设置 Firebase 项目并导入相关的 Firebase 库。
- 实现 Google OAuth 登录集成,并在用户成功登录后,调用
getRedirectResult()
方法获取登录后的重定向结果。 - 在重定向结果中,你可以获取用户的授权信息和相关数据。
- 使用 Firebase 的 Firestore 服务将用户数据存储到 Firestore 中。
以下是一个示例代码,展示了如何从 Google OAuth 登录的重定向结果中提取用户数据并将其存储在 Firestore 中:
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import java.util.HashMap;
import java.util.Map;
public class GoogleOAuthHandler {
private FirebaseAuth firebaseAuth;
private FirebaseFirestore firebaseFirestore;
public GoogleOAuthHandler() {
firebaseAuth = FirebaseAuth.getInstance();
firebaseFirestore = FirebaseFirestore.getInstance();
}
public void handleGoogleSignInResult(String redirectResult) {
// 从重定向结果中解析 Google Sign In 账户信息
GoogleSignInAccount account = GoogleSignIn.getSignedInAccountFromIntent(redirectResult);
if (account!= null) {
String userId = account.getId();
String email = account.getEmail();
// 创建或获取用户文档
DocumentReference userDocRef = firebaseFirestore.collection("users").document(userId);
// 将用户数据存储到 Firestore
Map<String, Object> userData = new HashMap<>();
userData.put("email", email);
userDocRef.set(userData);
}
}
}
在上述示例中,我们首先获取 FirebaseAuth 和 FirebaseFirestore 对象。然后,在handleGoogleSignInResult()
方法中,我们从重定向结果中解析出 Google Sign In 账户的用户 ID 和电子邮件。接下来,我们创建或获取与该用户对应的文档,并将用户数据存储到 Firestore 中。
请确保将"users"
替换为你实际存储用户数据的 Firestore 集合路径,并根据需要添加其他相关的用户数据字段。
请注意,这只是一个基本示例,实际应用中可能需要根据你的具体需求进行更多的处理和验证。此外,还需要处理 Firebase 认证和 Firestore 的权限管理,以确保数据的安全性和正确性。
希望这个示例对你有帮助。如果你有任何进一步的问题,请随时提问。