為iOS項(xiàng)目同時(shí)接入微信登錄和Apple登錄

整個(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);
        }
    }
}
  1. 觸發(fā)登錄

在需要登錄的地方,調(diào)用微信登錄接口:

- (void)wechatLogin {
    SendAuthReq *req = [[SendAuthReq alloc] init];
    req.scope = @"snsapi_userinfo";
    req.state = @"your_state";
    [WXApi sendReq:req completion:nil];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容