Google plus 实施谷歌&x2B;使用React Native登录

Google plus 实施谷歌&x2B;使用React Native登录,google-plus,react-native,Google Plus,React Native,我想在React原生应用程序中集成G+登录(按照)。我已经通过Facebook登录,它运行得很好,但我不确定在G+文档的这一点上该怎么做: 在视图控制器的.h文件中,导入GooglePlus/GooglePlus.h,并声明此控制器类实现gppsignedelegate协议 如果有人能提供一些指针/代码示例 谢谢 所以这与React Native只有半相关性,因为您的主要问题似乎是编写G+登录的Obj-C端。为此,请抓取适用于Google Plus的iOS快速入门应用程序: 按照说明打开示例项

我想在React原生应用程序中集成G+登录(按照)。我已经通过Facebook登录,它运行得很好,但我不确定在G+文档的这一点上该怎么做:

在视图控制器的.h文件中,导入GooglePlus/GooglePlus.h,并声明此控制器类实现gppsignedelegate协议

如果有人能提供一些指针/代码示例


谢谢

所以这与React Native只有半相关性,因为您的主要问题似乎是编写G+登录的Obj-C端。为此,请抓取适用于Google Plus的iOS快速入门应用程序:

按照说明打开示例项目,您将找到包含以下行的SignInViewController.m文件:

@interface SignInViewController () <GPPSignInDelegate>
@接口符号查看控制器()
这似乎就是你想要的

一旦你有工作,你将需要实现连接,以反应本机。你链接到的Facebook帖子展示了如何做到这一点,但官方文档如下:

我还写了一篇文章,展示了我能想到的最简单的本机模块,我认为它很好地描述了一般概念:


编辑2017

Expo框架现在是react本机应用程序的默认框架,在该框架内,内置了谷歌认证:

世博会文件:

获取Android和iOS客户端ID:

从“React”导入React
从“Expo”导入Expo
从“反应本机按钮”导入按钮
类登录扩展了React.Component{
signInWithGoogleAsync=async()=>{
试一试{
const result=wait Expo.Google.logInAsync({
androidClientId:process.env.GOOGLE\u ANDROID\u CLIENT\u ID,
iosClientId:process.env.GOOGLE\u IOS\u CLIENT\u ID,
作用域:['profile'],
})
如果(result.type==='success'){
返回结果
}
返回{已取消:true}
}捕获(e){
返回{错误:e}
}
}
onLoginPress=async()=>{
const result=等待此消息。signInWithGoogleAsync()
//如果没有result.error或result.cancelled,则用户已登录
//对结果做点什么
}
render(){
返回(登录)
}
}
旧答案


现在有了一个用于登录react native的Google+库:

经过这么多的努力,我已经解决了在react native应用程序中集成Google+signin所面临的所有问题。 请找到一个逐步的变化需要做 1.在Google云平台中创建项目: 我使用的是谷歌云平台,如果您不使用,您只需在谷歌控制台下启用API即可

  • 为您的项目启用Google+API,并在您的Google云控制台中生成API密钥

  • 设置android项目的SHA-1键和包名(如AndroidManifest.xml中所示)(注意:如果您使用expo进行此操作,则应首先弹出expo以实现此目的,)

  • 要生成自己的SHA-1,请使用命令->keytool-list-v-keystore mystore.keystore

    注意:如果您的构建是调试构建,那么使用上述命令生成的SHA-1将无法工作,请仔细检查您的adb日志,您的android调试构建使用的SHA-1将记录在设备日志中。要查看设备日志,请从/Users//Library/Android/sdk/platform tools->adb logcat运行以下命令

  • 在firebase中导入相同的项目:如果不使用firebase,请跳过此步骤和下一步

  • 在firebase项目中设置android项目,然后设置应用程序中使用的身份验证方法

  • 然后为您的firebase项目设置sameSHA-1键:从侧栏导航到项目设置,单击常规,选择android应用程序并设置SHA-1键

  • 注意:设置SHA-1后,在同一页面下载google-services.json文件。并将该文件保存在您的android project director应用程序文件夹/ReactNativeProjectFolder/android/app下

  • 添加“react native google signin”和“firebase”模块
  • npm安装反应本机google登录–保存

    npm安装firebase–保存

  • 在/app/bundle.gradle中添加依赖项
  • 注意:在下面的代码中,这些排除是最重要的,否则您将遇到奇怪的链接错误

    implementation project(':react-native-google-signin')
    
    如果您的应用程序正在使用一些其他依赖项,如react-native maps或react-native social share,则也可以进行以下更改

    implementation(project(":react-native-google-signin")){
        exclude group: "com.google.android.gms" // very important
    }
    compile(project(':react-native-maps')) {
          exclude group: 'com.google.android.gms', module: 'play-services-base'
          exclude group: 'com.google.android.gms', module: 'play-services-maps'
        }
    implementation 'com.google.android.gms:play-services-base:11.+'
    implementation 'com.google.android.gms:play-services-maps:11.+'
    
  • 您的android/bundle.gradle文件应该如下所示 //顶级生成文件,您可以在其中添加所有子项目/模块通用的配置选项

    构建脚本{ 存储库{ 谷歌() jcenter() } 依赖关系{ classpath'com.android.tools.build:gradle:3.0.1' classpath'com.google.gms:googleservices:3.0.0'//{ log('Google Config Success'); successCallback(); }) .catch((错误)=>{ log('Google Config Error'); 故障回调(err); }); }

    函数googleSignin(){ googleAuthConfig(()=>{ 谷歌签名 。然后((用户)=>{ 常数{ accessToken }=用户; var-credentials=firebase.auth.GoogleAuthProvider.credential(null,accessToken); firebase.auth().signInWithCredential(凭据) 。然后((firebaseResult)=>{ loginToSG(调度、firebaseResult、道具、“谷歌”、注册表回调); }) .catch(错误=>console.log('error which check with firebase',error'); }) .catch((错误)=>{ 控制台日志(err); }); },(谷歌配置错误)=>{ console.log(googleConfigErr); }); }

  • 最后,最重要的步骤是->一旦完成npm缓存清理,删除您的