Это правильный способ получения пользовательского кода авторизации через Google Sign-In? - PullRequest
0 голосов
/ 10 ноября 2019

Итак, я пытаюсь сделать логин пользователя, используя его учетную запись Google (впервые делаю это), и Я использую официальный плагин Google для Unity для этого . Последняя часть - это получение кода авторизации пользователя и его отправка на наш пользовательский сервер, который запрашивает токен доступа. Но как его получить? Является ли task.result.authCode или task.result.idToken одним из них?

В настоящее время я пытаюсь получить task.Result.authCode и вручную отправить его на сервер через наш интерфейс отладки, но не могупо какой-то причине этот authCode не отображается в logcat через Debug.Log. Приведенный ниже код представляет собой фрагмент из примера скрипта плагина Google, я только приложил немного Debug.Log, чтобы увидеть результат задачи и попытаться вручную отправить код на наш сервер.

        internal void OnAuthenticationFinished(Task<GoogleSignInUser> task) {
          if (task.IsFaulted) {
            using (IEnumerator<System.Exception> enumerator =
                    task.Exception.InnerExceptions.GetEnumerator()) {
              if (enumerator.MoveNext()) {
                GoogleSignIn.SignInException error =
                        (GoogleSignIn.SignInException)enumerator.Current;
                AddStatusText("Got Error: " + error.Status + " " + error.Message);
              } else {
                AddStatusText("Got Unexpected Exception?!?" + task.Exception);
              }
            }
          } else if(task.IsCanceled) {
            AddStatusText("Canceled");
          } else  { // This works, but the Debug.Log below doesn't show up in the logcat.
            AddStatusText("Logged in as: " + task.Result.DisplayName + "!");
            Debug.Log("authCode: " + task.Result.AuthCode);
            Debug.Log("idToken: " + task.Result.IdToken);

// Below is one of the ways of sending the access token manually.
            GoogleLoginOrRegister user = new GoogleLoginOrRegister();
// Getting authenticated user authCode
            user.Code = task.Result.AuthCode;
// Requires an access token as input
            userApi.GoogleLoginOrRegister(user);
          }

Если правильный токен доступа отправлен на сервер, пользователь может правильно войти в систему, используя свою учетную запись Google. Проблема в том, что в настоящее время у меня нет способа проверить, правильный ли authCode или idToken, или есть ли еще какие-то шаги, которые мне нужно сделать, прежде чем получить правильный токен доступа. Я отправляю authCode на сервер, но ответа нет, а также приложение не входит в систему, даже если сама задача находится в состоянии Success (посмотрите код выше в последнем операторе else, эта часть действительно вызван и работает, так как я вижу свое отображаемое имя из учетной записи Google в тексте состояния в моем приложении).

...