- 授权
- 用户取消授权
- 发起授权
- 获取 Access Token
- 获取用户信息
- 刷新 Access Token
- 接口索引 v2
- 新建文档 v2
- 查询文档 v2
- 重命名文档 v2
- 移动文档 v2
- 删除文档 v2
- 生成副本 v2
- 收藏文档 v2
- 置顶文档 v2
- 设置水印 v2
- 创建快捷方式 v2
- 恢复文档 v2
- 导入文档说明 v2
- 预导入文档 v2
- 上传文档至 COS v2
- 异步导入文档 v2
- 查询导入进度 v2
- 导出文档 v2
- 导出进度查询 v2
- 获取文档列表 v2
- 查询文件夹信息 v2
- 添加文件夹 v2
- 删除文件夹 v2
- 查询文件夹权限 v2
- 移动文件夹 v2
- 重命名文件夹 v2
- 查询用户访问权限 v2
- 转让文档所有权 v2
- 查看文档权限 v2
- 设置文档权限 v2
- 申请文档权限 v2
- 添加协作成员 v2
- 移除协作成员 v2
- 查询协作成员 v2
- 列表过滤 v2
- 关键字搜索 v2
- fileID 转换 v2
- 上传图片 v2
- 查询消息列表未读数量 v2
- 接口索引 v2
- Smartsheet 基本概念 v2
- 接口索引 v2
- 添加子表 v2
- 删除子表 v2
- 查询子表 v2
- 添加视图 v2
- 删除视图 v2
- 查询视图 v2
- 添加记录 v2
- 删除记录 v2
- 查询记录 v2
- 更新记录 v2
- 添加字段 v2
- 删除字段 v2
- 查询字段 v2
- 更新字段 v2
- 接口索引 v3
- 获取 Doc 文档内容 v3
- 更新 Doc 文档内容 v3
- 接口索引 v2
- 更新收集截止时间 v2
- 生成收集结果 v2
- 概况
- 简介
- 从小程序跳转
- 从经过微信认证的 App 跳转
- 从微信 H5 网页跳转
- 打开腾讯文档列表页
- 打开一篇文档或发布为网页的文档
- 打开模板商城、资料包领取等功能
- 导入文件到腾讯文档
- 跳转其他小程序
- 简介
- 通过小程序调用授权
- 通过 App 调用授权(微信小程序)
- 通过 App 调用授权(QQ 小程序)
- 授权后获取 Token
- 返回腾讯文档小程序
- 问题排查
- 常见错误码 v3
- 频率控制
- 请求头部 v2
- 常见错误码 v2
- folderID v2
- 文件信息 v2
- ID 介绍 v2
- 令牌长度
- ID 介绍 v2
- 文件元信息 v2
- folderID v2
- 文件类型 v2
- COS 文件信息 v2
- 列表类型和排序类型 v2
- 文件列表信息 v2
- 文件夹信息 v2
- 文件夹权限信息 v2
- 文档权限 policy v2
- 搜索文件类型 v2
- 搜索结果列表 v2
- 上传图片接口支持的图片类型 v2
- 查询子表 v2
- 添加子表 v2
- 删除多行(列) v2
- 清空区域内容 v2
- 更新区域内容 v2
- 批量插入图片 v2
- SheetProperties v2
- Smartsheet 基本概念 v2
- AddSheetRequest v2
- 参数列表 v2
- 参数列表 v2
- 参数列表 v2
- Document v3
- Request v3
- 文件来源 v2
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
通过 App 调用授权(QQ 小程序)
通过 App 调用授权(QQ 小程序)
第三方 App 可接入 QQ 互联 SDK,实现跳转腾讯文档 QQ 小程序,调用腾讯文档开放平台授权能力,获得用于换取 access_token 的授权码。
目前拉起腾讯文档 QQ 小程序授权为试运行能力,如接入中遇到问题,可向我们反馈 (opens new window)。
请先参考 QQ 互联平台移动应用接入指南(下载 (opens new window)/iOS (opens new window)/Android (opens new window)),接入 QQ 互联 SDK,并根据应用在 QQ 互联平台上注册的信息,完成 SDK 的初始化操作;iOS 应用还需要按照说明文档 (opens new window)要求,配置好应用的 Universal Link。
跳转腾讯文档 QQ 小程序开放平台授权的 path 为 URL 编码格式,其中路径名为 packages/miniapp-open/open-auth/open-auth
,并需拼接 4 个(iOS)/5 个(Android)参数,具体参数的规则如下:
client_id
:在腾讯文档开放平台申请的 Client ID;state
:值可以为空,如果应用需要在授权时传入一些状态信息,以便于授权完成后,继续执行特定的业务逻辑,可以自拟 state 的值,授权完成后会将该 state 值原样返回给应用;package_name
:接入应用的包名(Android)/ Bundle ID(iOS),这是为了在授权完成后,能正常回跳到应用;connect_id
:应用在 QQ 互联申请的 APPID;intent_uri
:仅 Android 需要填写,自拟一个 URI,作为接收回调的 Intent。
请注意所有的参数值都需要先做一次 URL Encode,然后拼接到授权页路径上。第一个参数名前面使用 ? 号,其余的参数名前面使用 & 号。
代码示例(Android)(参考 QQ 互联文档 (opens new window)):
String appId = "填写应用在 QQ 互联平台的 APPID";
String clientId = "填写您在腾讯文档开放平台的 ClientID";
String state = "填写您自定义的状态参数,可留空";
String packageName = "填写应用的包名";
String intentUri = "填写回调 Activity 监听的 Intent";
String path = "packages/miniapp-open/open-auth/open-auth?client_id=" + URLEncoder.encode(clientId)
+ "&state=" + URLEncoder.encode(state)
+ "&package_name=" + URLEncoder.encode(packageName)
+ "&connect_id=" + URLEncoder.encode(appId)
+ "&intent_uri=" + URLEncoder.encode(intentUri);
mTencent.startMiniApp("1108338344", path, "release");
// 在能收到上述 Intent 的 Activity 中获取授权完成的 code 和 state
public void onCreate(Bundle savedInstanceState) {
// ...
String extraData = getIntent().getData().getQueryParameter("param");
JSONObject respObj = new JSONObject(extraData);
String code = respObj.getString("code");
String state = respObj.getString("state");
}
代码示例(iOS)(参考 QQ 互联文档 (opens new window)):
NSString *appId = @"填写应用在 QQ 互联平台的 APPID";
NSString *clientId = @"填写您在腾讯文档开放平台的 ClientID";
NSString *state = @"填写您自定义的状态参数,可留空";
NSString *bundleId = @"填写应用的 Bundle ID";
NSString *escapedClientId = [clientId stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];
NSString *escapedState = [state stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];
QQApiLaunchMiniProgramObject* launchMiniApp = [QQApiLaunchMiniProgramObject new];
launchMiniApp.miniAppID = @"1108338344";
launchMiniApp.miniPath = [NSString stringWithFormat:@"packages/miniapp-open/open-auth/open-auth?client_id=%@&state=%@&package_name=%@&connect_id=%@", escapedClientId, escapedState, bundleId, appId];
launchMiniApp.miniprogramType = 3;
SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:launchMiniApp];
QQApiSendResultCode ret = [QQApiInterface sendReq:req];
// 在 UIApplicationDelegate 的 openURL 生命周期中获取授权完成的 code 和 state
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
if ([url.host isEqualToString:@"maLaunchApp"]) {
NSURLComponents *components = [[NSURLComponents alloc] initWithString:url.absoluteString];
[components.queryItems enumerateObjectsUsingBlock:^(NSURLQueryItem * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj.name isEqualToString:@"appParameter"]) {
NSString *extraData = obj.value;
NSError *jsonError;
NSDictionary *respObj = [NSJSONSerialization JSONObjectWithData:[extraData dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:&jsonError];
NSString *code = [respObj valueForKey:@"code"];
NSString *state = [respObj valueForKey:@"state"];
}
}];
}
return YES;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论