通过 App 调用授权(微信小程序)
... 2026-1-26 大约 2 分钟
# 通过 App 调用授权(微信小程序)
第三方 App 可接入微信开放平台 SDK,实现跳转腾讯文档微信小程序,调用腾讯文档开放平台授权能力,获得用于换取 access_token 的授权码。
请先参考微信开放平台移动应用接入指南(iOS (opens new window)/Android (opens new window)),接入微信开放平台 SDK,并根据应用在微信开放平台上注册的信息,完成 SDK 的初始化操作;iOS 应用还需要按照上述文档要求,配置好应用的 Universal Link。
跳转腾讯文档微信小程序开放平台授权的 path 为 URL 编码格式,其中路径名为 packages/miniapp-open/open-auth/open-auth,并需拼接 2 个参数,具体参数的规则如下:
client_id:在腾讯文档开放平台申请的 Client ID;state:值可以为空,如果应用需要在授权时传入一些状态信息,以便于授权完成后,继续执行特定的业务逻辑,可以自拟 state 的值,授权完成后会将该 state 值原样返回给应用。
请注意所有的参数值都需要先做一次 URL Encode,然后拼接到授权页路径上。第一个参数名前面使用 ? 号,其余的参数名前面使用 & 号。
代码示例(Android)(参考微信官方文档 (opens new window)):
String appId = "填写应用在微信开放平台的 APPID";
String clientId = "填写您在腾讯文档开放平台的 ClientID";
String state = "填写您自定义的状态参数,可留空";
WXAPI api = WXAPIFactory.createWXAPI(context, appId);
WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
req.userName = "gh_252c5f06840b";
req.path = "packages/miniapp-open/open-auth/open-auth?client_id=" + URLEncoder.encode(clientId) + "&state=" + URLEncoder.encode(state);
req.miniprogramType = WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_RELEASE;
api.sendReq(req);
// 在 WXEntryActivity 的 onResp 中获取授权完成的 code 和 state
public void onResp(BaseResp resp) {
if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
String extraData = ((WXLaunchMiniProgram.Resp) resp).extMsg;
JSONObject respObj = new JSONObject(extraData);
String code = respObj.getString("code");
String state = respObj.getString("state");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
代码示例(iOS)(参考微信官方文档 (opens new window)):
NSString *clientId = @"填写您在腾讯文档开放平台的 ClientID";
NSString *state = @"填写您自定义的状态参数,可留空";
NSString *escapedClientId = [clientId stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];
NSString *escapedState = [state stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];
WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
launchMiniProgramReq.userName = @"gh_252c5f06840b";
launchMiniProgramReq.path = [NSString stringWithFormat:@"packages/miniapp-open/open-auth/open-auth?client_id=%@&state=%@", escapedClientId, escapedState];
launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease;
[WXApi sendReq:launchMiniProgramReq];
// 在注册为微信回调函数的 onResp 中获取授权完成的 code 和 state
- (void) onResp: (BaseResp*)resp {
if ([resp isKindOfClass: [WXLaunchMiniProgramResp class]]) {
NSString *extraData = [(WXLaunchMiniProgramResp *)resp extMsg];
NSError *jsonError;
NSDictionary *respObj = [NSJSONSerialization JSONObjectWithData:[extraData dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:&jsonError];
NSString *code = [respObj valueForKey:@"code"];
NSString *state = [respObj valueForKey:@"state"];
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21