use*_*080 10 c# android unity-game-engine firebase firebase-authentication
我正在尝试在Unity游戏项目中实施Firebase身份验证系统.一切都在网站的控制台面板上正确设置.我已经阅读了文档,但无法使用Unity内Firebase中的任何API登录Google.所以我买了Prime31的Unity游戏服务插件.
这是我的问题:
如何在Firebase中使用Google进行身份验证?我是否需要自己管理Google登录?
在Firebase文档中,我发现:
"用户成功登录后,请更换Firebase凭据的访问令牌,并使用Firebase凭据对Firebase进行身份验证:"
Firebase.Auth.Credential credential = Firebase.Auth.GoogleAuthProvider.GetCredential(googleIdToken, googleAccessToken);
auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
//......//
});
如何获得googleIdToken,googleAccessToken作为上述参数传递?
请帮忙(带代码).我非常喜欢Firebase,并希望在没有像PRIME31这样的第三方插件的情况下使用它.
这是我的带有 Firebase 身份验证和 GoogleSignIn 库的完整 Google SignIn 代码:
private void SignInWithGoogle(bool linkWithCurrentAnonUser)
{
GoogleSignIn.Configuration = new GoogleSignInConfiguration
{
RequestIdToken = true,
// Copy this value from the google-service.json file.
// oauth_client with type == 3
WebClientId = "[YOUR API CLIENT ID HERE].apps.googleusercontent.com"
};
Task<GoogleSignInUser> signIn = GoogleSignIn.DefaultInstance.SignIn();
TaskCompletionSource<FirebaseUser> signInCompleted = new TaskCompletionSource<FirebaseUser>();
signIn.ContinueWith(task =>
{
if (task.IsCanceled)
{
signInCompleted.SetCanceled();
}
else if (task.IsFaulted)
{
signInCompleted.SetException(task.Exception);
}
else
{
Credential credential = Firebase.Auth.GoogleAuthProvider.GetCredential(((Task<GoogleSignInUser>)task).Result.IdToken, null);
if (linkWithCurrentAnonUser)
{
mAuth.CurrentUser.LinkWithCredentialAsync(credential).ContinueWith(HandleLoginResult);
}
else
{
SignInWithCredential(credential);
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
该参数用于登录,目的是将新的 google 帐户与当前登录的匿名用户相关联。如果需要,您可以忽略方法的这些部分。另请注意,所有这些都是在 Firebase Auth 库正确初始化后调用的。
我为 GoogleSignIn 使用了以下库: https //github.com/googlesamples/google-signin-unity
该链接的自述页面将引导您完成为您的环境进行此设置的分步说明。在遵循这些并使用上面的代码之后,我在 android 和 iOS 上都可以使用它。
这是SignInWithCredential上面代码中使用的方法:
private void SignInWithCredential(Credential credential)
{
if (mAuth != null)
{
mAuth.SignInWithCredentialAsync(credential).ContinueWith(HandleLoginResult);
}
}
Run Code Online (Sandbox Code Playgroud)
mAuth 是对 FirebaseAuth 的引用:
mAuth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3560 次 |
| 最近记录: |