如何在 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 编码