2016-07-23 2 views
2

Мне нужно, чтобы указатель google в моем собственном приложении для реагирования. Так что я google это много, я нахожу react-native-google-signin, что кажется потрясающим, но я застрял с одной ошибкой.реагировать на родной google signin код возврата: 12501

Я следую за все действия, описанные в READ.me и Androide Guide

я следующий код:

componentDidMount() { 


    GoogleSignin.hasPlayServices({autoResolve: true}).then(() => { 
     // play services are available. can now configure library 
     GoogleSignin.configure({ 
      scopes: [ 
       'email', 'profile', 'https://www.googleapis.com/auth/plus.profile.emails.read', 'https://www.googleapis.com/auth/plus.login' 
      ], 
      webClientId: 'web-clientid from the console developper', 
      offlineAccess: true 
     }).then(() => { 
      // you can now call currentUserAsync() 
      GoogleSignin.currentUserAsync().then((user) => { 
       console.log('USER', user); 
      }).done(); 
     }); 
    }); 
} 

signIn() { 
    GoogleSignin.signIn() 
     .then((user) => { 
      console.log(user); 
     }) 
     .catch((err) => { 
      console.log('WRONG SIGNIN', err); 
     }) 
     .done(); 
} 

render() { 
    return (
     <Image source={BACKGROUND} style={styles.container}> 
      <Image source={ICON}></Image> 
      <Text style={styles.welcome}> 
       APP TEST 
      </Text> 

      <GoogleSigninButton 
       style={{width: 230, height: 48}} 
       size={GoogleSigninButton.Size.Standard} 
       color={GoogleSigninButton.Color.Light} 
       onPress={this.signIn} 
      /> 
     </Image> 
    ); 

Когда я нажимаю в знаке в кнопке, всплывает окно выбрать, какой счет Google Я хочу использовать. но когда я выбираю счет, я имею ошибку следовать: НЕПРАВИЛЬНО Ошибка входа: неизвестный код состояния: 12501 (...)

Так я смотрю в FAQи, который Hare в нижней части Androide Guide и подтвердить, что мой certificate_hash в android/app/google-services.json одинаковы. Я также проверяю, что идентификатор приложения в моем app/build.graddle - это то же самое, что я вхожу в облако Google.

Я думаю, что проблема есть с WebclientId, что я прохожу в моей компетенции, я Passin веб-типа один, но уже пытаются двумя клиентами идентификатор, которые находятся в OAuth 2

screen

Я ищу в вопросах githubs, и я нахожу, что кто-то сказал, чтобы снова загрузить google-сервисы. Я делаю это, но файл равен файлу i предыдущей загрузки. довольно уверен, я что-то пропустил, но не знаю что. Может ли кто-нибудь мне помочь?

Я открываю проблему в github, но я не получаю много действий.

Заранее спасибо

ответ

1

ридми вам общие состояния

D. After the sign-in completes I get the following error error code 12501. what to do ?

This is a permission error. Make sure the certificate_hash in android/app/google-services.json matches your certificate.

To get your sha1-hash

keytool -exportcert -keystore ~/.android/debug.keystore -list -v Also make sure the application id matches the one you enter on the cloud console.

Существует .user файл (или что-то подобное), которые я не могу вспомнить с верхней части моей головы. Он находится в скрытой папке, поэтому вам придется использовать поисковик для поиска этого файла и его удаления. Тогда он должен работать. Посмотрите на все пути, которые использует ваш код для его поиска, вам придется отлаживать эти файлы для пути.

+0

спасибо за помощь. Однако я не очень хорошо понимаю, что вы сказали. Как я могу найти скрытый файл, когда я не знаю имя? – Jacinto

+0

Вам придется отлаживать код для путей к файлам и проверять их. –

+1

Он имеет в виду, что FAQ - https://github.com/devfd/react-native-google-signin/blob/master/android-guide.md#d-after-the-sign-in-completes-i-get- следования ошибок, код ошибки-12501-что-на-DO- – r0ma

0

Может это поможет, попробуйте следующее:

  • Проверьте Google-services.json код cirtificate_hash. соответствует вашему соглашению с Android Signing Certificate SHA-1. используйте эту ссылку, чтобы найти их https://developers.google.com/mobile
  • Я тестировал ее на эмуляторе, но у эмулятора нет сервисов Google Play, поэтому я тестировал его на своем мобильном телефоне Android.
  • Используйте код благородных предшественников

    import {GoogleSignin, GoogleSigninButton} from 'react-native-google-signin'; 
    

затем

componentDidMount() { 
    GoogleSignin.configure({ 
     scopes: [ 
      'email', 'profile', 'https://www.googleapis.com/auth/plus.profile.emails.read', 'https://www.googleapis.com/auth/plus.login' 
     ], 
     webClientId: 'use here oauth_client[{client_id}]',//refer this given below example: 
     offlineAccess: true 
    }).then(() => { 
     // you can now call currentUserAsync() 
     GoogleSignin.currentUserAsync().then((user) => { 
      //user = GoogleSignin.currentUser(); 
      console.log('USER', user); 
      this.setState({user: user}); 
     }).done(); 
    }); 
} 

_signIn() { 
    GoogleSignin.signIn() 
     .then((user) => { 
      console.log('this1' + JSON.stringify(user));     
     }) 
     .catch((err) => { 
      console.log('WRONG SIGNIN', err); 
     }) 
     .done(); 
} 

_signOut(){ 
    GoogleSignin.signOut() 
     .then(() => { 
      console.log('out'); 
     }) 
     .catch((err) => { 

     }); 
} 

render() { 

    return (
     <View style={styles.container}> 
      <Text style={styles.welcome}> 
       Welcome to React Native! 
      </Text> 
      <Text style={styles.instructions}> 
       To get started, edit index.android.js 
      </Text> 
      <Text style={styles.instructions}> 
       Double tap R on your keyboard to reload,{'\n'} 
       Shake or press menu button for dev menu 
      </Text> 
      <GoogleSigninButton 
       style={{width: 48, height: 48}} 
       size={GoogleSigninButton.Size.Icon} 
       color={GoogleSigninButton.Color.Dark} 
       onPress={this._signIn.bind(this)}/> 
      <TouchableHighlight> 
       <Text onPress={this._signOut.bind(this)}> 
        signout 
       </Text> 
      </TouchableHighlight> 
     </View> 
    ); 
} 

: пример -> webClientId: '1059 .......... googleusercontent.com' Их два идентификатора клиента в google-services.json oauth_client [] используют первый.Вы можете сравнить его с ссылкой на учетную запись ниже https://console.developers.google.com/apis/credentials здесь ... Имя: Веб-клиент Тип: клиент веб-приложения Id: 1059 ........ googleusercontent.com

Это решает мою проблему. Отличный день. Спасибо. :)