如何在 Cordova 中将 org.chromium.identity 用于本地 google connect

Posted

技术标签:

【中文标题】如何在 Cordova 中将 org.chromium.identity 用于本地 google connect【英文标题】:Howto use org.chromium.identity for native google connect in Cordova 【发布时间】:2014-07-29 10:17:19 【问题描述】:

我想使用原生谷歌加号功能来连接我的 phonegap/cordova 应用程序(android et ios)。 通常在 Phonegap 中,我们使用 InAppBrowser 来包含网页弹出窗口。已经完成,但假设用户使用 Web UI 使用电子邮件和密码登录。所以在 Android 中,我们使用 google play 来实现这一点,而 IOS 也是如此。

1 月,现在可以在 Cordova 中使用 Chrome 应用程序。 http://blog.chromium.org/2014/01/run-chrome-apps-on-mobile-using-apache.html

许多 cordova 插件可用,特别是 chrome.identity : https://github.com/MobileChromeApps/mobile-chrome-apps/tree/master/chrome-cordova/plugins/chrome.identity

如何在 ChromeApps 之外使用这个插件进行原生谷歌登录? 我已经安装了插件,但没有示例可以访问 chrome 对象和 Api。

感谢您的帮助

【问题讨论】:

【参考方案1】:

这是一个老问题,但我想我应该发布我的解决方案,因为我今晚打了这个......下面是我如何使用插件进行身份验证和调用服务 API。抱歉,如果效率不高,这是一个漫长的夜晚:P(现在是在 Cordova 入门模板上构建的)

var app =  
onDeviceReady: function() 
    /*********************
    *   I attached an EventListener to a link so I kept this binding
    *   Helps when testing to have a link handy to revoke the token
    **********************/
    app.receivedEvent('deviceready');

    /****************************************************************************
    *   The documentation is a little odd here, but since this isn't
    *   a Chrome app, we need to set the Manifest JSON manually.
    *
    *   The scopes are to only modify and read a calendar, not sure I need both
    *   but what the hell...
    ****************************************************************************/
    chrome.runtime.setManifest(
      oauth2: 
         // ClientID obtained from the Developers Console
        client_id: clientID,
        scopes: [ 'https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.readonly' ]
      
    ,function()
        // callback for setMainfest, empty..
        );
    /***********************************************************************
    *   Because I don't have Google Play Services setup yet I have to use
    *   the 'interactive' mode which will prompt the user to select the account,
    *   then show a permission screen. 
    *
    *   I have multiple (Google) accounts on my phone so I set the 'accountHint'
    *   to try to force authenticating my primary account and avoid having to deal
    *   with a popup.
    ******************************************************************************/
    // Just checking if I already have grabbed it, if so, no need to do it again
    if(!bToken)
        chrome.identity.getAuthToken(
             
                'interactive': true,
                'accountHint':  ACCOUNT_EMAIL,
            , 
            function(token, acct) 
                // set a global variable or debug...
            );
        
,

var calendar = 
list: function(token) 
    // Simple AJAX call, passing the token through and dealing with the results...
    // This function just pulls calendar info...
       $.ajax(
        type: "GET",
        url: listURL,
        data: encodeURI("access_token="+token),
        cache: false,
        success:function(result) 
            // do something....
        
    )
    
 

希望这会有所帮助!

【讨论】:

以上是关于如何在 Cordova 中将 org.chromium.identity 用于本地 google connect的主要内容,如果未能解决你的问题,请参考以下文章

如何在离子应用程序中将图像设置为墙纸?

如何在 Swift 3 中将 captureStillImageAsynchronously(sampleBuffer) 转换为 base64 编码

如何仅在所有平台的离子中将应用程序限制为纵向模式?

在 netbeans 中将 FacebookConnect 添加到科尔多瓦

带有cordova的Appflow在构建中检测电容器

Cordova fileWriter.write() 不适用于 blob