DCloud_uni-ad_SPH
DCloud_uni-ad_SPH
  • 发布:2020-11-10 14:43
  • 更新:2023-12-15 11:04
  • 阅读:12415

DCloud授权登录接入文档

分类:HBuilderX

简介

DCloud用户开放平台,https://open.dcloud.net.cn,是DCloud为三方开发者服务商提供的开放平台。

DCloud将数百万开发者的流量通过开放平台提供给三方开发者服务商。

使用场景:

1.三方的开发者服务商,比如Git服务商,可以制作HBuilderX插件,并且将账户打通。比如在HBuilderX插件中注册项目的右键菜单,在HBuilderX中对项目点右键,一键上传源码到某Git服务商,且无需再重复注册三方Git服务账户。
2.第三方网站,可以申请web授权给自己网站,用户无需在网站注册,直接可以跳转到DCloud登录授权页面进行登录后回跳到网站进行登录。

当然不止是Git服务商、网站,所有其他开发者服务商,如测试、加固、多渠道发布、招聘...,均可通过DCloud用户开放平台共享DCloud的开发者资源。

插件授权使用步骤:

  1. 三方开发商需要在DCloud用户开放平台注册插件应用
  2. 开发HBuilderX插件,调用 hx.authorize.login API,拿到code码。文档详见:https://hx.dcloud.net.cn/ExtensionDocs/Api/README?id=authorize
  3. 插件将code码传到三方开发商服务器,从服务器端向 DCloud用户开放平台 的服务器请求,获取用户信息。文档具体见下。

WEB授权使用步骤:
1.第三方网站需要在DCloud用户开放平台注册授权WEB

  1. 在自己网站拼接url登录链接
  2. 用户登录完成后DCloud会携带code回跳到对应的第三方网址
  3. 第三方网站根据code在服务器端 DCloud用户开放平台 的服务器请求,获取用户信息 文档具体见下。

这套授权体系是国际标准的 OAuth2.0 授权机制。什么是OAuth2.0?
在用户授权的情况下,得到用于换取用户信息的令牌(code码)。拿到用户的授权令牌后,开发者在服务端通过接口换取accessToken,通过accessToken换取用户授权的基本信息。

OAuth2.0 授权登录流程

接入准备

DCloud用户开放平台创建授权,拿到client_id、client_secret

插件授权接入步骤

DCloud用户开放平台创建插件授权时,需要填写插件id。重点解释下这个概念。

HBuilderX的所有插件,发布时均需发布到DCloud插件市场,地址:https://ext.dcloud.net.cn/。HBuilderX用户从插件市场获取插件来使用。

插件市场的每个插件都有一个唯一的插件id,该id由插件作者上传插件时自行输入,提交插件时会进行验重,与其他插件的id不冲突即可使用。

目前创建授权是免审的,可以直接获取到client_id和client_secret。

插件接入流程图

接入流程

1. 通过HX提供的hx.authorize.login()方法获取code HX登录授权api接口
2. 开发者服务商获取到code后在自己服务器端去获取accessToken
3. 通过接口获取accessToken
请求过程建议将 参数 放在 Body 中传值,以保证数据安全。

开发者服务商从自己的服务器端发送请求到DCloud的服务器,地址如下:
https://account.dcloud.net.cn/dcloudOauthv2/accessToken?code={code}&client_id={client_id}&app_secret={app_secret}
请求方式
POST
返回json数据格式

{  
    "ret": 0,   // 状态码 非0为错误码  
    "desc": "success",  // 描述  
    "data": {  
        "access_token": "f06e27a0-1e85-11eb-bc60-8fdcccfc955b",     // access_token  
        "access_token_ttl": "2020-12-04 18:10:17",                  // access_token过期时间  
        "refresh_token": "30895c20-1e80-11eb-9c0e-ef6813716901",    // refresh_token  
        "refresh_token_ttl": "2021-11-04 17:29:08"                  // refresh_token过期时间  
    }  
}
4. 通过accessToken获取用户信息

地址
https://account.dcloud.net.cn/dcloudOauthv2/userInfo?access_token={access_token}
请求方式
POST
返回json数据格式

{  
    "ret": 0,       // 状态码 非0为错误码  
    "desc": "success",  // 描述  
    "data": {  
        "nickname": "phil123",      // 用户昵称  
        "avatar": "",               // 用户头像地址  
        "uid": "e4541ee0-dada-11ea-a0b7-3f6acaa2391b",  // 用户uid  
        "email": "",        // 用户邮箱 如果用户授权了  
    "phone": "",        // 用户手机号码 如果用户授权了  
    }  
}
accessToken过期后可以通过refreshToken进行获取新的access_token

地址
https://account.dcloud.net.cn/dcloudOauthv2/accessTokenByRefreshToken?refresh_token={refresh_token}
请求方式
POST
返回json数据格式

{  
    "ret": 0,       // 状态码 非0为错误码  
    "desc": "success",  // 描述  
    "data": {  
        "access_token": "88e3b460-1e95-11eb-b2c2-b30587156981",     // access_token  
        "access_token_ttl": "2020-12-04 20:01:56",                  // access_token过期时间  
        "refresh_token": "28c86600-1e87-11eb-b70f-ef63535e6ee0",    // refresh_token  
        "refresh_token_ttl": "2021-11-04 18:19:01"                  // refresh_token过期时间  
    }  
}

WEB授权接入步骤

在DCloud用户开放平台创建WEB授权时,需要填写域名。拿到client_id、client_secret

WEB授权接入流程图

点击体验WEB授权示例

接入流程

1. 拼接DCloud登录授权url链接地址

https://account.dcloud.net.cn/oauth2/webAuthorize?client_id={client_id}&redirect_uri={redirect}&response_type=code
用户登录授权完成后会回跳到redirect并在url参数内携带code参数
注意:
redirect需要进行encodeURIComponent转码
redirect的主域名需要和在开放平台式申请时填写的域名保持一致

2. 开发者服务商获取到code后在自己服务器端去获取accessToken
3. 通过接口获取accessToken
请求过程建议将 参数 放在 Body 中传值,以保证数据安全。

开发者服务商从自己的服务器端发送请求到DCloud的服务器,地址如下:
https://account.dcloud.net.cn/dcloudOauthv2/accessToken?code={code}&client_id={client_id}&client_secret={client_secret}
请求方式
POST
返回json数据格式

{  
    "ret": 0,   // 状态码 非0为错误码  
    "desc": "success",  // 描述  
    "data": {  
        "access_token": "f06e27a0-1e85-11eb-bc60-8fdcccfc955b",     // access_token  
        "access_token_ttl": "2020-12-04 18:10:17",                  // access_token过期时间  
        "refresh_token": "30895c20-1e80-11eb-9c0e-ef6813716901",    // refresh_token  
        "refresh_token_ttl": "2021-11-04 17:29:08"                  // refresh_token过期时间  
    }  
}
4. 通过accessToken获取用户信息

地址
https://account.dcloud.net.cn/dcloudOauthv2/userInfo?access_token={access_token}
请求方式
POST
返回json数据格式

{  
    "ret": 0,       // 状态码 非0为错误码  
    "desc": "success",  // 描述  
    "data": {  
        "nickname": "phil123",      // 用户昵称  
        "avatar": "",               // 用户头像地址  
        "uid": "e4541ee0-dada-11ea-a0b7-3f6acaa2391b",  // 用户uid  
        "email": "",        // 用户邮箱 如果用户授权了  
    "phone": "",        // 用户手机号码 如果用户授权了  
    }  
}
accessToken过期后可以通过refreshToken进行获取新的access_token

地址
https://account.dcloud.net.cn/dcloudOauthv2/accessTokenByRefreshToken?refresh_token={refresh_token}
请求方式
POST
返回json数据格式

{  
    "ret": 0,       // 状态码 非0为错误码  
    "desc": "success",  // 描述  
    "data": {  
        "access_token": "88e3b460-1e95-11eb-b2c2-b30587156981",     // access_token  
        "access_token_ttl": "2020-12-04 20:01:56",                  // access_token过期时间  
        "refresh_token": "28c86600-1e87-11eb-b70f-ef63535e6ee0",    // refresh_token  
        "refresh_token_ttl": "2021-11-04 18:19:01"                  // refresh_token过期时间  
    }  
}

案例

csdn开发了HBuilderX插件,无需额外注册csdn账户,即可在HBuilderX中一键上传项目到gitcode代码托管平台。
详见:https://ext.dcloud.net.cn/plugin?id=4882

HBuilderX中也预置了该插件的入口:

同时,csdn的官网也支持了HBuilder登录,开发者可以使用DCloud的账户直接登录csdn。

0 关注 分享

要回复文章请先登录注册

拿回忆下酒

拿回忆下酒

本地项目名称 和 插件ID 保持一致就可以本地授权调试了
2023-12-15 11:04
DCloud_uni-ad_SPH

DCloud_uni-ad_SPH (作者)

回复 7***@qq.com :
不可使用本地测试地址进行调试
2022-12-05 10:14
7***@qq.com

7***@qq.com

请问开放平台填写的授权WEB域名不能填 `http://localhost:5173` 吗,另外开放平台可以填多个地址吗,比如开发环境的域名地址与生产环境的域名地址会不一样 怎么解决
2022-12-02 15:59