整個(gè)集成流程主要分為三步:項(xiàng)目配置、代碼集成、服務(wù)端對(duì)接。
集成前準(zhǔn)備
在寫(xiě)代碼前,需要先完成一些準(zhǔn)備工作。
* **Apple開(kāi)發(fā)者賬號(hào)**:用于配置“使用Apple登錄”功能。
* **微信開(kāi)放平臺(tái)賬號(hào)**:需要是企業(yè)認(rèn)證的賬號(hào)(個(gè)人賬號(hào)不支持)
* **Xcode項(xiàng)目**:準(zhǔn)備好你的項(xiàng)目文件。

image.png
pod 'WechatOpenSDK'
安裝完成后,需要實(shí)現(xiàn) WXApiDelegate 協(xié)議并處理回調(diào)。
// 在 AppDelegate 中導(dǎo)入 SDK
#import <WechatOpenSDK-WXApi.h>
// 在 AppDelegate 中實(shí)現(xiàn)協(xié)議
@interface AppDelegate : UIResponder <UIApplicationDelegate, WXApiDelegate>
@end
// 初始化 SDK
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 注冊(cè)你的微信 AppID,并設(shè)置 Universal Link
[WXApi registerApp:@"你的微信AppID" universalLink:@"https://yourdomain.com/"];
return YES;
}
// 處理 Universal Link 回調(diào)
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}
// 處理 URL Scheme 回調(diào)
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
return [WXApi handleOpenURL:url delegate:self];
}
// WXApiDelegate 回調(diào)方法
- (void)onResp:(BaseResp *)resp {
if ([resp isKindOfClass:[SendAuthResp class]]) {
SendAuthResp *authResp = (SendAuthResp *)resp;
if (authResp.errCode == 0) {
// 獲取到授權(quán) code,將其發(fā)送給服務(wù)端
NSString *code = authResp.code;
NSLog(@"微信授權(quán)成功,code: %@", code);
// TODO: 將 code 發(fā)送給服務(wù)端
} else {
NSLog(@"微信授權(quán)失敗: %d", authResp.errCode);
}
}
}
- 觸發(fā)登錄
在需要登錄的地方,調(diào)用微信登錄接口:
- (void)wechatLogin {
SendAuthReq *req = [[SendAuthReq alloc] init];
req.scope = @"snsapi_userinfo";
req.state = @"your_state";
[WXApi sendReq:req completion:nil];
}