美文网首页
微信登录

微信登录

作者: 小鲜肉老腊肉都是肉 | 来源:发表于2022-01-12 22:09 被阅读0次

    1.1 获取Team ID


    Team ID

    3.2 配置apple-app-site-association文件
    3.2.1 创建名为apple-app-site-association的无后缀文件。
    3.2.2 编辑文件内容,把文件给后台小哥放到服务器,让他给个https的地址。

    {
           "applinks": {
            "apps": [],
            "details": [
                {
                    "appID": "Team ID.Bundle ID",
                    "paths": ["*"]
                }
            ]
        }
    }
    

    注意:paths后面 ["*"]中的*表示全路径,也可["/app/*"]表示app下的全路径,所有url都可以进入到app中打开,只要和Associated Domains、universal link对应起来就行

    例(1):文件地址为:https://a.b.c/apple-app-site-association,"paths": ["*"],Associated Domains应该为applinks:a.b.c/,universal link应为https://a.b.c/

    例(2):文件地址为:同上,"paths": ["/app/*"],Associated Domains应该为applinks:a.b.c/,universal link应为https://a.b.c/app/
    3.3 Signing&Capabilities点左上角“+”,选择Associated Domains,设置applinks

    applinks

    2.设置LSApplicationQueriesSchemes

    TARGETS -> info -> Custom iOS Taeget Properties添加LSApplicationQueriesSchemes为数组类型,增加weixin和weixinULAPI。


    LSApplicationQueriesSchemes

    3.设置URL scheme

    URL scheme为微信开发者平台获取的,就是APPID


    URL scheme

    4.代码设置

    appdelegate中didFinishLaunchingWithOptions方法:
    WXApi.registerApp(APPID, universalLink: "https://apiproduct.yachaungkeji.cn/tempimgs/wxnew/app/test/")

    App中微信登录按钮请求的方法:
    let urlString = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=(APPID)&secret=(SECRET)&code=(sendResp.code!)&grant_type=authorization_code"

    Info中URL Types设置URL Schemes
    Signing&Capabilites->AssiociatedDomains->Domains

    5.AppDelegate设置

    5.1 AppDelegate设置代理<WXApiDelegate>
    5.2 AppDelegate代理方法

    -(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
            
        if ([url.host isEqualToString:@"safepay"]) {
            
            //Callback为nil时,支付代码里的回调才会执行
            //跳转支付宝钱包进行支付,处理支付结果
            [[AlipaySDK defaultService]processOrderWithPaymentResult:url standbyCallback:nil];
            //授权跳转支付宝钱包进行支付,处理支付结果
            [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:nil];
        }
        else{
            return [WXApi handleOpenURL:url delegate:self];
        }
        return YES;
    }
    -(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
        return [WXApi handleOpenURL:url delegate:self];
    }
    -(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler{
        
        return [WXApi handleOpenUniversalLink:userActivity delegate:self];
    }
    - (void)onReq:(BaseReq*)req{
    
        NSLog(@"---");
    }
    
    - (void)onResp:(BaseResp*)resp{
    
        if ([resp isKindOfClass:[SendAuthResp class]]) {
            //登录授权成功
        }
        else{ //if ([resp isKindOfClass:[PayResp class]]) {
            //登录授权成功
        }
        SendAuthResp *resp2 = (SendAuthResp *)resp;
    
        NSLog(@"resp2.code------%@",resp2.code);
    
    }
    

    5.3 SceneDelegate设置代理<WXApiDelegate>
    5.4 SceneDelegate代理方法

    -(void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts API_AVAILABLE(ios(13.0)){
            
        if (URLContexts.count > 0) {
            
            NSEnumerator *enumerator = [URLContexts objectEnumerator];
            UIOpenURLContext *urlContext = [enumerator nextObject];
            NSURL *url = urlContext.URL;
            if ([url.host isEqualToString: @"safepay"]) {
                //Callback为nil时,支付代码里的回调才会执行
                //跳转支付宝钱包进行支付,处理支付结果
                [[AlipaySDK defaultService]processOrderWithPaymentResult:url standbyCallback:nil];
                //授权跳转支付宝钱包进行支付,处理支付结果
                [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:nil];
            }
            else{
                [WXApi handleOpenURL:url delegate:self];
            }
        }
    }
    -(void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity API_AVAILABLE(ios(13.0)){
        [WXApi handleOpenUniversalLink:userActivity delegate:self];
    }
    - (void)onReq:(BaseReq*)req{
    
        NSLog(@"---");
    }
    
    - (void)onResp:(BaseResp*)resp{
    
        if ([resp isKindOfClass:[SendAuthResp class]]) {
            //登录授权成功
        }
        else{ //if ([resp isKindOfClass:[PayResp class]]) {
            //登录授权成功
        }
        SendAuthResp *resp2 = (SendAuthResp *)resp;
    
        NSLog(@"resp2.code------%@",resp2.code);
    
    }
    

    参考资料:
    https://www.jianshu.com/p/1936e649b012
    https://blog.csdn.net/qcx321/article/details/103784060
    https://blog.csdn.net/weixin_43064185/article/details/109388196

    相关文章

      网友评论

          本文标题:微信登录

          本文链接:https://www.haomeiwen.com/subject/bisgcrtx.html