xwartz / xwartz.github.com

Home Page
https://xwartz.github.com/
1 stars 0 forks source link

Chrome Packaged App 第三方登陆流程 #4

Closed xwartz closed 7 years ago

xwartz commented 10 years ago

Google账户认证:

五个步骤:(获取客户端标识符的话,跳到第3步) 1.向 manifest.json 文件中添加权限,并上传应用

"permissions": [
  "identity"
]

上传应用 (其实本地加载正在开发的扩展程序就行了,谷歌就会产生一个密钥) 2.将上传后应用的 manifest.json 中的密钥复制到现在的 manifest.json 文件中 具体步骤:

1. 进入用户配置文件目录。在 Mac 上:`~/Library/Application\ Support/Google/Chrome/Default/Extensions`
2. 找出已安装的应用与扩展程序管理页面中的应用的标识符(ID)一致的。
3. 进入找到的应用的目录,打开 `manifest.json` 。
4. 将 `manifest.json` 中的 `"key"` 复制并粘贴到正在开发的`manifest.json`  文件中。

3.为 Chrome 应用获取 OAuth2 客户端标识符(Client ID),需要在 Google API 控制台中注册应用,获取客户端标识符:

1. 使用上传应用至 Chrome 网上应用店的同一个 Google 帐户登录 Google API 控制台。
2 . Create... 菜单项,创建新的项目。
3. 创建并命名后,进入“Services”导航菜单项,打开需要的 Google 服务。
4. 进入“API Access”导航菜单项,并单击 `Create an OAuth 2.0 client ID... `
5. 输入请求的商标信息,选择 `Installed application` 的类型。
6. 选择 Chrome Application 并输入应用标识符(在扩展程序管理页面显示的ID,我们现在这个是 `eempgbpnkjnacmilmobpbhbfpdjdcpgd`)。

4.更新 manifest.json文件,包含客户端标识符与区域(需要获取的信息)

"oauth2": {
    "client_id":  " xxoo.apps.googleusercontent.com",
    "scopes": [
      "https://www.googleapis.com/auth/userinfo.email"
    ]
  }

5.获取认证令牌,调用 identity.getAuthToken

chrome.identity.getAuthToken({ 'interactive': true }, function(token) {
  // 使用令牌。
});

设置 { 'interactive': true } 会弹出交互界面。

非 Google 帐户认证(以Facebook为例)

1.在提供商获取客户端标识符 需要在提供商注册一个 OAuth2 客户端标识符,并将客户端标识符配置为一个网站。 Facebook 注册应用入口, 填完基本信息后,在Settings下,点击Add Platform 输入Site URI,使用这种形式的 URL:https://<扩展程序标识符>.chromiumapp.org/<此处可以是任意内容> ,如下图,
image PS:由于公司的应用,就打码了。 由于网页和离线应该都需要,将Site URL 保持网页的 https://www.xxoo.com (保持上图的也可以) 并且在Advanced中的Valid OAuth redirect URIs 添加 https://eempgbpnkjnacmilmobpbhbfpdjdcpgd.chromiumapp.org/xxoohttps://www.xxoo.comimage 2.添加您的应用需要访问的提供商资源的权限 为了向服务提供商 API 端点发出跨来源XHR,您需要在权限中将合适的匹配表达式加入白名单:

"permissions": [
  ...
  "https://www.facebook.com/*"
]

3.获取认证令牌, 接口函数launchWebAuthFlow.

chrome.identity.launchWebAuthFlow(
  {'url': '<进行认证的 URL<', 'interactive': true},
  function(redirect_url) { /* 从 redirect_url 提取令牌 */ });

<进行认证的 URL> 是网站向提供商进行认证的任何 URL

例如,你正在与Facebook进行 OAuth2 流程,以客户端标识符 1601920653366811 注册了应用,希望访问Facebook上的用户邮箱:

"https://www.facebook.com/dialog/oauth?client_id=1601920653366811&redirect_uri=https://eempgbpnkjnacmilmobpbhbfpdjdcpgd.chromiumapp.org/ticktick&response_type=token&scope=email"

参考 https://developer.chrome.com/apps/app_identity