cordova-plugin-googleplus, 在iOS和Android上,使用Google符号登录的Cordova插件

分享于 

17分钟阅读

GitHub

  繁體 雙語
Cordova plugin to login with Google Plus on iOS and Android
  • 源代码名称:cordova-plugin-googleplus
  • 源代码网址:http://www.github.com/EddyVerbruggen/cordova-plugin-googleplus
  • cordova-plugin-googleplus源代码文档
  • cordova-plugin-googleplus源代码下载
  • Git URL:
    git://www.github.com/EddyVerbruggen/cordova-plugin-googleplus.git
    Git Clone代码到本地:
    git clone http://www.github.com/EddyVerbruggen/cordova-plugin-googleplus
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/EddyVerbruggen/cordova-plugin-googleplus
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    在 cordova/phonegap插件中签名

    通过 Eddy,由 Sam (PointSource,LLC ) 协助

    0.索引

    1.描述

    这个插件允许你在 安卓上使用sign登录并标识用户。 从框中,你将得到电子邮件,显示 NAME,给定 NAME,家庭 NAME,配置文件url和用户,。 你还可以配置它以获取一个 idTokenserverAuthCode。

    这个插件只包装了API中的Google符号。 每个用例都应该实现更深入的API访问,每个。

    2屏幕截图

    Android

    iOS

    3。Google API安装程序

    要与谷歌沟通,你需要做一些乏味的设置,抱歉。

    我建议你在iOS和安卓上使用相同的项目。

    继续之前

    请进入 config.xml,确保你的软件包 NAME ( 例如 )。 APP ID ) 是你想要的。 在以下步骤中设置iOS和Android时使用这个软件包 NAME ! 如果你没有,你可能会获得 12501,'用户已经取消'错误,尽管从未取消过程中的日志。

    如果你使用诸如ionic之类的框架来构建项目,那么这一步非常重要。 创建项目时,config.xml 有一个占位符 packagename,比如 com.ionic. *,,这样你就可以立即开始开发。

    <?xml version='1.0' encoding='utf-8'?>
    <widgetid="** REPLACE THIS VALUE **".. .>
    ...
    </widget>

    iOS

    为了获得你的iOS REVERSED_CLIENT_ID在这里生成一个配置文件。 这里 GoogleService-Info.plist 文件包含安装过程中需要的REVERSED_CLIENT_ID。 这里值仅适用于 iOS。

    REVERSED_CLIENT_ID 也被称为开发人员控制台上的"ios URL方案"。

    登录iOS将用户通过谷歌 SDK ( 而不是单独的Safari浏览器) 带到一个服务器上。

    Android

    为了配置 Android,在这里生成一个配置文件。 Google登录后,Google将自动在开发者控制台中创建必要的凭证。 不需要将生成的google-services.json 文件添加到cordova项目中。

    确保执行 keytool 步骤,如这里解释的那样,否则身份验证将失败。

    重要事项:

    • 第一步 上面,在 generating generating发行文件时,你最好在generating发行证书指纹时使用的调试证书指纹来显示 2种类型的证书指纹,发行和调试 Debug。 这对于应用程序在开发和生产版本上的工作都是必需的。
    • 请确保在生成指纹时使用了正确的别名 NAME。
    
    $ keytool -exportcert -keystore <path-to-debug-or-production-keystore> -list -v -alias <alias-name>
    
    
    
    

    登录Android将使用在用户设备上登录的帐户。

    在 Google Play 存储中发布你的应用程序

    当你在Play商店发布你的应用时,谷歌会用另一个。 发布应用之后,将 SHA-1 指纹复制到中的"应用签名"部分,在 Google Play 控制台中。 将这里指纹粘贴到中的Release客户端身份管理器中。

    网络客户端 Id

    如果你想从登录过程中获得 idToken 或者 serverAuthCode,你需要通过你的项目应用程序的客户机 ID。 这可以在developer的 Console上的your页面上找到。

    4安装( PhoneGap CLI/cordova CLI )

    这里插件与以下插件兼容:

    下面是( 首先备份你的项目)的工作原理: !

    使用 Cordova CLI和 npm:

    
    $ cordova plugin add cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=myreversedclientid
    
    
    $ cordova prepare
    
    
    
    

    使用 Cordova CLI从GitHub获取最新版本:

    
    $ cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-googleplus --save --variable REVERSED_CLIENT_ID=myreversedclientid
    
    
    $ cordova prepare
    
    
    
    

    重要事项:

    • 注意:请注意,是你在你的iOS配置文件中找到的反向副本的一个占位符。 不要用引号包围这个值。 (。iOS应用程序)

    • 但是在第 3步中,你必须将( iOS和安卓) 或者Android应用程序的反向版本替换为第1 步,这将是你的开发者的 credential的反向价值。" com.googleusercontent.apps。uniqueId",不带引号。

    GooglePlus.js 被自动引入。 不需要在html中更改或者添加任何内容。

    5安装( PhoneGap构建)

    将这个添加到你的config.xml:

    对于( 稳定) NPM版本:

    <pluginname="cordova-plugin-googleplus"source="npm">
     <variablename="REVERSED_CLIENT_ID"value="myreversedclientid"/>
    </plugin>

    从 Git ( 不推荐)的最新版本:

    <pluginspec="https://github.com/EddyVerbruggen/cordova-plugin-googleplus.git"source="git">
     <variablename="REVERSED_CLIENT_ID"value="myreversedclientid"/>
    <plugin>

    6.用法

    检查一下演示程序,让你快速前进,或者伤害你自己并遵循以下步骤。

    注意,这些方法都不应该在 deviceready 触发之前调用。

    例如:

    document.addEventListener('deviceready', deviceReady, false);functiondeviceReady() {
     //I get called when everything's ready for the plugin to be called!console.log('Device is ready!');
     window.plugins.googleplus.trySilentLogin(...);
    }

    isAvailable

    3/31/16: 不再要求先检查这里方法。 它保存在代码orthoganality中。

    登录

    登录函数通过Google认证过程来引导用户。 所有参数都是可选的,但是有一些警告。

    要在安卓上获得一个 idToken,你必须在你的webClientId ( 一个常见的错误是提供Android客户机 ID ) 中输入 在iOS上,默认情况下,idToken 被包含在签名中。

    要获取 serverAuthCode,你必须传入你的webClientId 并将设置为 true。 如果脱机为 true,但未提供 webClientId,则 serverAuthCode 将显示为 requested requested。

    请求的缺省范围是 profileemail ( 总是请求)。 若要请求其他作用域,请将它们添加为空间separated列表scopes 参数。 他们将被要求完全按照。 有关可以请求的有效作用域的信息,请参阅 Google范围文档。 比如, 'scope': 'https://www.googleapis.com/auth/youtube https://www.googleapis.com/auth/tasks'

    当然,为了使用任何额外的作用域或者 api,它们需要在开发人员的项目控制台中激活。

    用法
    window.plugins.googleplus.login(
     {
     'scopes':'... ', // optional, space-separated list of scopes, If not included or empty, defaults to `profile` and `email`.'webClientId':'client id of the web app/server side', // optional clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required.'offline':true// optional, but requires the webClientId - if set to true the plugin will also return a serverAuthCode, which can be used to grant offline access to a non-Google server },
     function (obj) {
     alert(JSON.stringify(obj)); // do something useful instead of alerting },
     function (msg) {
     alert('error: '+ msg);
     }
    );

    成功回调( 第二个参数) 获取一个包含以下内容的JSON对象,以及我的Google帐户的示例数据:

    obj.email// 'eddyverbruggen@gmail.com'obj.userId// user idobj.displayName// 'Eddy Verbruggen'obj.familyName// 'Verbruggen'obj.givenName// 'Eddy'obj.imageUrl// 'http://link-to-my-profilepic.google.com'obj.idToken// idToken that can be exchanged to verify user identity.obj.serverAuthCode// Auth code that can be exchanged for an access token and refresh token for offline accessobj.accessToken// OAuth2 access token

    用户可以使用其他用户信息。 添加作用域选项所需的范围,然后分别将信息返回到在Android和iOS上的handleSignInResultdidSignInForUser 函数中创建的结果。

    如果认证不成功,则错误回调( 第三个参数) 会收到错误状态代码。 可以在谷歌的developer网站上找到这些状态码的描述。

    在iOS上,错误回调将包含一个 NSError localizedDescription

    尝试静默登录

    你可以调用 trySilentLogin 来检查它们是否已经登录到应用程序,如果它们是。

    如果成功,你将获得与 login 函数相同的对象,但是如果失败,则不会向用户显示身份验证对话框。

    调用 trySilentLoginlogin 相同,但函数名除外。

    window.plugins.googleplus.trySilentLogin(
     {
     'scopes':'... ', // optional - space-separated list of scopes, If not included or empty, defaults to `profile` and `email`.'webClientId':'client id of the web app/server side', // optional - clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required.'offline':true, // Optional, but requires the webClientId - if set to true the plugin will also return a serverAuthCode, which can be used to grant offline access to a non-Google server },
     function (obj) {
     alert(JSON.stringify(obj)); // do something useful instead of alerting },
     function (msg) {
     alert('error: '+ msg);
     }
    );

    强烈建议使用与登录相同的选项来实现 trySilentLogin,以避免任何潜在的复杂性。

    注销

    这将清除OAuth2令牌。

    window.plugins.googleplus.logout(
     function (msg) {
     alert(msg); // do something useful instead of alerting }
    );

    断开

    这将清除OAuth2令牌,忘记用于登录的帐户,并断开该帐户与应用程序的连接。 这将要求用户在下次登录时允许再次访问应用程序。 请注意,这种效果并非总是即时的。 完全断开可能需要一段时间。

    window.plugins.googleplus.disconnect(
     function (msg) {
     alert(msg); // do something useful instead of alerting }
    );

    7交换 idToken

    使用后端服务器进行身份验证的Google文档

    如 上面 文章所述,idToken 可以交换用户信息以确认用户身份。

    注意:Google不希望将用户标识数据直接发送到服务器。 idToken是安全安全地发送数据的首选方法,因为必须通过服务器进行验证才能解压。

    这有几个用途。在客户端,可以获得双重确认用户身份,或者用于获取电子邮件主机。 服务器端是 idToken 真正达到它的步幅的地方。 在允许用户访问服务器资源之前,或者在交换 serverAuthCode 用于访问和刷新令牌(。查看下一节) 之前,确认用户身份是一种简单的方法。

    如果服务器端只需要标识,而不是其他帐户访问,这是一种提供信息的安全且简单的方法。

    8交换 serverAuthCode

    用于启用服务器端访问的Google文档

    就像 上面 文章提到的,serverAuthCode 是一个可以被交换来访问和刷新令牌的项目。 idToken 不同,它允许服务器端直接访问用户的Google帐户。

    对于这里交换,你有几个选项: 使用Google可以在混合应用程序中获得这些信息,或者你可以将代码发送到后端服务器,使用任何必要的方法交换它们。

    如前所述,这个插件都是关于用户身份验证和身份,所以任何用户的帐户都需要用用例实现。

    9故障排除

    • Q: 我无法获得在Android上工作的认证。 为什么没有 ANDROID API密钥?

    • 答:在Android上你需要执行 keytool 步骤,查看安装说明以获得详细信息。

    • Q: $@#*的构建失败了!

    • 答:你需要在 Android SDK Manager 中安装 Android支持库和Android支持库。 确保你使用的是最新版本的那些。

    • 问:为什么这对我的安卓仿真程序不适用?

    • 答:确保你使用的虚拟设备运行的是的Google目标和/或者Google的CPU

    10.变更日志

    • 5.0.3: 添加了便利方法 getSigningCertificateFingerprint 来检索在Google开发人员控制台中所需的Android证书指纹。
    • 5.0.2: 根据google的建议,需要在iOS上针对 SafariServicesCoreText 框架进行链接。 在iOS上添加了 loginHint
    • 5.0.0: Android GoogleSignIn SDK ( 见 #193), iOS 4.0.0,iOS与Facebook认证插件的兼容性,添加了 familyNamegivenName
    • 4.0.8: 修复安卓 6,在请求许可时它会崩溃。 Thx #166!
    • 4.0.7: 为iOS添加了一个丢失的框架。 Thx #168!
    • 4.0.6: 更新的iOS GoogleSignIn SDK至 2.4.0. Thx #153!
    • 4.0.5: 修复了iOS上的一个损坏的导入。
    • 4.0.4: 再次使用Android框架标签
    • 4.0.3: 在 iOS isAvailable 上总是会返回尝试,因为这应该适用于框架中新的Google。 在iOS上的登录结果中增加了密文。
    • 4.0.1: 如果预先调用 isAvailable,Android上的登录会使应用程序崩溃。
    • 4.0.0: 去掉了对 iosApiKey的需求,将Android恢复到了谷歌的playservices框架,以获得更广泛的兼容性,。
    • 3.0.0: 使用Google登录到 iOS,而不是 Google+。
    • 1.1.0: 添加了 isAvailable,用于发布 #37
    • 1.0.0: 支持iOS和Android的初始版本。

    plugin  log  Cordova  
    相关文章