Как получить accessToken для React Native GoogleSignIn?

Я не могу получить accessToken, он мне нужен в моем бэкэнд API.

Когда я попробую это,

googleLogin = () => {

  GoogleSignin.signIn()
    .then((data) => {
      console.info("TEST "+JSON.stringify(data));
      var postData = {
        access_token: data.accessToken,
        code: data.idToken,
      };

      let axiosConfig = {
        headers: {
            'Content-Type': 'application/json',
            "Accept": "application/json",
        }
      };
     ....
      //Backend api axios call
     ....

    })
    .then((user) => {
      console.info("TEST G LOGIN 1 "+JSON.stringify(user))
    })
    .catch((error) => {
      console.info("....."+JSON.stringify(error))
    });
}

получил этот ответ, он не включает

accessToken

{
    "scopes": ["https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/drive.readonly"],
    "serverAuthCode": "4/jwE5LLLLLLa7-f33333jmMD2V978oyp44444eb9yGe_qhHnkXXXXXXXLFXKZlQdDzlH-iIJx_gzqlLLLLLL3Q0PP0",
    "idToken": "...v65a4MCC-ZUQmys_wf_DoCOBJEMuI........",
    "user": {
        "photo": "https://lh3.googleusercontent.com/-tLLLLLyeS0KE/AAAMMMMAAAI/AAAAAAAAAAA/ACHi3reMhihoeTe_6NjL666666EUVU82Q/s96-c/photo.jpg",
        "email": "[email protected]",
        "familyName": "tech",
        "givenName": "test",
        "name": "testtech",
        "id": "11688888817288868"
    }
}

согласно документация

getTokens() Resolves with an object containing { idToken: string, accessToken: string, } or rejects with an error. Note that using accessToken is discouraged.

Итак, я попробовал это в

GoogleSignin.Sign({
....
 var gettoken =  GoogleSignin.currentUserAsync(data.user).then((token) => {
      console.info('USER token', token);
    }).done();
...
 })

он получил ошибку, а также попытался const token = GoogSignIn.getTokens(), он возвращает null.

информация о package.json

{
...
    "react": "16.8.3",
    "react-native": "0.59.9",
    "react-native-firebase": "5.3.1",
    "react-native-google-signin": "^2.0.0"
...
}

Пожалуйста, предложите процедуру получения accessToken.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
3 804
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Наконец я получаю accessToken.

Шаг 1:- Я удалил все сгенерированные clidenId в консоли разработчика Google (сохранил только идентификатор клиента веб-приложения, который я использовал в своем веб-проекте), а также удалил приложение Android в проекте Firebase.

Шаг 2:- Создайте новое приложение для Android в firebase, загрузите google-services.json и вставьте его в android/app/google-services.json

Шаг 3:- Скопировал clidenId из этой части google-services.json.

...
  "services": {
        "appinvite_service": {
          "other_platform_oauth_client": [
            {
              "client_id": "xxxxxxx-xxxxx.apps.googleusercontent.com", //<--- copied this clientID
              "client_type": 3
            },
            {
              "client_id": "XXXXXXXXXX-fBBBBBBBBBBBBBBBBBBBBBBBBpugnhrade.apps.googleusercontent.com",
              "client_type": 2,
              "ios_info": {
                "bundle_id": "com.projectios"
              }
            }
          ]
        }
      }

...

и вставить

GoogleSignin.configure({
  webClientId: 'paste it here',
});

Шаг 4: - Это код для получения accessToken (Но этот код не работал в моем предыдущем файле google-services.json)

googleLogin = () => {
 
    GoogleSignin.signIn()
      .then((data) => {

        console.info("TEST " + JSON.stringify(data));

        const currentUser = GoogleSignin.getTokens().then((res)=>{
          console.info(res.accessToken ); //<-------Get accessToken
          var postData = {
            access_token: res.accessToken,
            code: data.idToken,
    
          };
    
          let axiosConfig = {
            headers: {
              'Content-Type': 'application/json',
              "Accept": "application/json",
            }
          };
         -----
          backend api call
         -----
});

      })
      .then((user) => {
        console.info("TEST G LOGIN 1 " + JSON.stringify(user))
      })
      .catch((error) => {
        console.info("....." + JSON.stringify(error))
      });   
  }

Другие вопросы по теме