目录
接入说明:
任何需要调用企业微信API的应用,都需要先在企业微信管理后台创建一个应用,设置完成后,即可使用对应的功能。
不允许跨企业使用,即仅支持企业自己的app使用。
SDK文件包括 libWXWorkApi.a,WWKApi.h,WWKApiObject.h 三个。
请前往 资源下载 下载最新SDK包sdk.zip
SDK名称:企业微信登录/分享SDK
版本号: 0.16
主要功能:通过企业微信登录/分享SDK,企业可在自建的app引入sdk,从而可使用企业微信账号登录app,并且在app中分享消息到企业微信。
使用说明:详见本接入指南
开发者:深圳市腾讯计算机系统有限公司
隐私政策:请接入企业微信登录/分享 SDK的开发者,认真阅读《企业微信登录/分享SDK个人信息保护规则》,并确保对企业微信登录/分享SDK的接入使用情况符合上述规则的相关要求。
下载包包含4个文件,其名称和含义分别是:
WWKApi.h 定义SDK接口的头文件
WWKApiObject.h 定义SDK接口用来进行参数传递的对象
libWXWorkApi.a 第三方工程需要引用的SDK静态库文件
demo.tar.gz 一个供参考的企业微信iOS端SDK使用的示例工程,这个工程介绍了当前版本SDK提供的所有接口的使用方法
#import "AppDelegate.h"
#import "WWKApi.h"
@interface AppDelegate () <WWKApiDelegate>
@end
@implementation AppDelegate
@end
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
/*! @brief 调用这个方法前需要先到管理端进行注册 走管理端的注册方式
*
* 在管理端通过注册(可能需要等待审批),获得schema+corpid+agentid
* @param registerApp 第三方App的Scheme
* @param corpId 第三方App所属企业的ID
* @param agentId 第三方App在企业内部的ID
*/
[WWKApi registerApp:@"wwauth700000a5f2191000014" corpId:@"ww700000a5f2191" agentId:@"1000014"];
return YES;
}
2.重写AppDelegate的handleOpenURL和openURL方法,第三方iOS App需要在这两个方法中调用SDK的handleOpenURL接口方法,让SDK有机会在第三方App内部处理SSO结果返回给第三方iOS App后的后续处理工作
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation {
return [self handleOpenURL:url sourceApplication:sourceApplication];
}
- (BOOL)handleOpenURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication {
return [WWKApi handleOpenURL:url delegate:self];
}
3.现在,你的程序要实现和企业微信终端交互的具体请求与回应,因此需要实现WWKApiDelegate协议的两个方法。第三方iOS App可以根据自身需求实现这两个方法
// 如果第三方程序向企业微信发送了sendReq的请求,那么onResp会被回调。sendReq请求调用后,会切到企业微信终端程序界面。
- (void)onResp:(WWKBaseResp *)resp {
}
// onReq是企业微信终端向第三方程序发起请求,要求第三方程序响应。第三方程序响应完后必须调用sendRsp返回。在调用sendRsp返回时,会切回到企业微信终端程序界面。
-(void) onReq:(WWKBaseReq*)req {
}
具体在此两方法中所要完成的内容由你定义,具体可参考企业微信开发工具包中的SDK Sample Demo源码。
使用SDK中的企业微信登录功能,获取企业微信用户信息。
// 其中req参数为WWKSendMessageReq类型 根据发送的消息类型不同需要设置不同的req变量
-(BOOL) sendReq:(BaseReq*)req
- (IBAction)SSO:(id)sender {
WWKSSOReq *req = [[WWKSSOReq alloc] init];
// state参数为这次请求的唯一标示,客户端需要维护其唯一性。SSO回调时会原样返回
req.state = @"adfasdfasdf23412341fqw4df14t134rtflajssf8934haioefy";
[WWKApi sendReq:req];
}
注意,如果使用Xcode16及以上版本构建应用,需要使用异步接口。
// 其中req参数为WWKSendMessageReq类型 根据发送的消息类型不同需要设置不同的req变量
+ (void)sendReq:(WWKBaseReq *)req completionHandler:(void(^)(WWKApiResponseErrorCode errorCode))completionHandler API_AVAILABLE(ios(10.0));
需要特别指出的是,使用了SSO接口进行登录的程序需要在 handleOpenURL 函数中处理来自企业微信的回调,企业微信返回的是获取用户信息的一次性code,第三方app需要继续使用此code通过后端服务器换取用户的信息。
请求方式:GET(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
参数说明:
参数 | 必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
code | 是 | 通过成员授权获取到的code,每次成员授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期 |
权限说明:
跳转的域名须完全匹配企业内任一应用的可信域名。
返回结果:
{
"errcode": 0,
"errmsg": "ok",
"UserId":"USERID"
}
参数 | 说明 |
---|---|
UserId | 成员UserID |
出错返回示例:
{
"errcode": 40029,
"errmsg": "invalid code"
}