2016-07-02 8 views
1

Meine _signIn() Funktion funktioniert nicht, wenn ich auf die GoogleSigninButton-Komponente klicke. Ich möchte, dass die Google-Anmeldeinformationen auf Klick auf den Button, um Pop-up-Bildschirmreagieren natives Google Anmelden api funktioniert nicht

Das ist mein index.android.js

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

class xyz extends Component { 
    _signIn() { 
    GoogleSignin.signIn() 
.then((user) => { 
    console.log(user); 
    this.setState({user: user}); 
}) 
.catch((err) => { 
    console.log('WRONG SIGNIN', err); 
}) 
.done(); 
    } 

    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}> 
      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)}/> 
     </View> 
    ); 
    } 
} 

build.gradle Datei

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.3.1' 
     classpath 'com.google.gms:google-services:2.1.0' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     mavenLocal() 
     jcenter() 
     maven { 
      // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm 
      url "$rootDir/../node_modules/react-native/android" 
     } 
    } 
} 

settings.gradle

rootProject.name = 'xyz' 

include ':app' 
include ':react-native-google-signin', ':app' 
project(':react-native-google-signin').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-google-signin/android') 

app/build.gradle

apply plugin: "com.android.application" 

import com.android.build.OutputFile 

/** 
* The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets 
* and bundleReleaseJsAndAssets). 
* These basically call `react-native bundle` with the correct arguments during the Android build 
* cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the 
* bundle directly from the development server. Below you can see all the possible configurations 
* and their defaults. If you decide to add a configuration block, make sure to add it before the 
* `apply from: "../../node_modules/react-native/react.gradle"` line. 
* 
* project.ext.react = [ 
* // the name of the generated asset file containing your JS bundle 
* bundleAssetName: "index.android.bundle", 
* 
* // the entry file for bundle generation 
* entryFile: "index.android.js", 
* 
* // whether to bundle JS and assets in debug mode 
* bundleInDebug: false, 
* 
* // whether to bundle JS and assets in release mode 
* bundleInRelease: true, 
* 
* // whether to bundle JS and assets in another build variant (if configured). 
* // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants 
* // The configuration property can be in the following formats 
* //   'bundleIn${productFlavor}${buildType}' 
* //   'bundleIn${buildType}' 
* // bundleInFreeDebug: true, 
* // bundleInPaidRelease: true, 
* // bundleInBeta: true, 
* 
* // the root of your project, i.e. where "package.json" lives 
* root: "../../", 
* 
* // where to put the JS bundle asset in debug mode 
* jsBundleDirDebug: "$buildDir/intermediates/assets/debug", 
* 
* // where to put the JS bundle asset in release mode 
* jsBundleDirRelease: "$buildDir/intermediates/assets/release", 
* 
* // where to put drawable resources/React Native assets, e.g. the ones you use via 
* // require('./image.png')), in debug mode 
* resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", 
* 
* // where to put drawable resources/React Native assets, e.g. the ones you use via 
* // require('./image.png')), in release mode 
* resourcesDirRelease: "$buildDir/intermediates/res/merged/release", 
* 
* // by default the gradle tasks are skipped if none of the JS files or assets change; this means 
* // that we don't look at files in android/ or ios/ to determine whether the tasks are up to 
* // date; if you have any other folders that you want to ignore for performance reasons (gradle 
* // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ 
* // for example, you might want to remove it from here. 
* inputExcludes: ["android/**", "ios/**"], 
* 
* // override which node gets called and with what additional arguments 
* nodeExecutableAndArgs: ["node"] 
* 
* // supply additional arguments to the packager 
* extraPackagerArgs: [] 
* ] 
*/ 

apply from: "../../node_modules/react-native/react.gradle" 

/** 
* Set this to true to create two separate APKs instead of one: 
* - An APK that only works on ARM devices 
* - An APK that only works on x86 devices 
* The advantage is the size of the APK is reduced by about 4MB. 
* Upload all the APKs to the Play Store and people will download 
* the correct one based on the CPU architecture of their device. 
*/ 
def enableSeparateBuildPerCPUArchitecture = false 

/** 
* Run Proguard to shrink the Java bytecode in release builds. 
*/ 
def enableProguardInReleaseBuilds = false 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 

    defaultConfig { 
     applicationId "com.xyz" 
     minSdkVersion 16 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
     ndk { 
      abiFilters "armeabi-v7a", "x86" 
     } 
    } 
    splits { 
     abi { 
      reset() 
      enable enableSeparateBuildPerCPUArchitecture 
      universalApk false // If true, also generate a universal APK 
      include "armeabi-v7a", "x86" 
     } 
    } 
    buildTypes { 
     release { 
      minifyEnabled enableProguardInReleaseBuilds 
      proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" 
     } 
    } 
    // applicationVariants are e.g. debug, release 
    applicationVariants.all { variant -> 
     variant.outputs.each { output -> 
      // For each separate APK per architecture, set a unique version code as described here: 
      // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits 
      def versionCodes = ["armeabi-v7a":1, "x86":2] 
      def abi = output.getFilter(OutputFile.ABI) 
      if (abi != null) { // null for the universal-debug, universal-release variants 
       output.versionCodeOverride = 
         versionCodes.get(abi) * 1048576 + defaultConfig.versionCode 
      } 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: "libs", include: ["*.jar"]) 
    compile "com.android.support:appcompat-v7:23.0.1" 
    compile "com.facebook.react:react-native:+" // From node_modules 
    compile project(":react-native-google-signin") 
} 

// Run this once to be able to run the application with BUCK 
// puts all compile dependencies into folder libs for BUCK to use 
task copyDownloadableDepsToLibs(type: Copy) { 
    from configurations.compile 
    into 'libs' 
} 
apply plugin: 'com.google.gms.google-services' 
+0

Sie finden die Lösung? – Jacinto

Antwort

1

bereites SHA1 bekommen:

keytool -exportcert -keystore ~/.android/debug.keystore -list -v 

dann gehen Sie zu Ihrem Google-API-Konsole sicher sein, dass richtige SHA1 auf Android-Client für com.yourproject registriert ist. Irgendwie kann Keytool geändert werden (ich bin mir nicht sicher, vielleicht aufgrund der Aktualisierung von SDK Buid-Tool usw.), und Sie müssen es auf Google API-Konsole übereinstimmen. Das hat für mich funktioniert.

0

Versuchen Sie zuerst GoogleSignin.configure({YOUR_CONFIG_DATA}) anzurufen. konfigurieren Methode erstellt neue _apiClient Objekt, das in signIn Methode verwendet wird. (in android/src/main/java/co/apptailor/googlesignin/RNGoogleSigninModule.java)