APP接入微信登录

一.在微信开发平台->管理中心创建APP大概七天后通过,获取AppID和AppSecret

二.接入微信登录

1.通过pod添加WechatOpenSDK

pod 'WechatOpenSDK'

(若您已经会了podfile文件操作这段可略过)Podfile文件操作:按住command+空格键打开搜索输入terminal回车,输入cd+项目文件目录(可直接用鼠标把文件拖入输入框,路径直接会出现),输入pod init,然后输入ls查看文件夹下是否有Podfile文件,如果有继续操作输入 vim Podfile(podfile文件编辑的时候先要把光标放在文件窗口内再按一下i键,编辑完成退出的时候点一下esc键,然后按shift+键盘上的冒号键,输入wq,w是保存,q是退出,如果编辑错误导致无法退出,单独输入一个q再加一个叹号!),若ls命令后没有看到Podfile文件,说明pod init命令没有执行成功,请重新操作,或者您的Cocoapods有问题,请先检测一下.


podfile文件

操作成功后podfile文件内会有如上图一样有pod 'WechatOpenSDK'这段内容,然后请输入pod install,等待安装成功即可.

2.在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id(如下图所示)。


URL types

3.在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin(如下图所示)。


info.plist文件

4.允许网络访问,配置如下图(前期就该配置好的,但是我的忘记了,大家不要和我一样粗心)


info.plist文件网络访问配置

5.在你需要使 用微信终端API的文件中import WXApi.h 头文件,并增加 WXApiDelegate 协议。

#import <UIKit/UIKit.h>

#import "WXApi.h"

@interface AppDelegate : UIResponder <UIApplicationDelegate,WXApiDelegate>

@property (strong, nonatomic) UIWindow *window;

@end

6.1至6.3的方法都是在appdelegate.m文件内的方法

6.1.要使你的程序启动后微信终端能响应你的程序,必须在代码中向微信终端注册你的id。(如下图所示,在 AppDelegate 的 didFinishLaunchingWithOptions 函数中向微信注册id)。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    //向微信注册

    [WXApi registerApp:@"你的appid"];

    return YES;

}

6.2. 重写AppDelegate的handleOpenURL和openURL方法:(下面两个方法可以直接拷过去用)

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {

    return  [WXApi handleOpenURL:url delegate:self];

}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

    return [WXApi handleOpenURL:url delegate:self];

}

6.3获取登录成功失败信息的方法

-(void) onResp:(BaseResp*)resp{

    switch(resp.errCode) {

        case0://用户同意

        {

            if([resp isKindOfClass:[SendAuthResp class]]) {//判断是否是微信登录

                SendAuthResp*aresp = (SendAuthResp*)resp;

                [[NSNotificationCenter defaultCenter]postNotificationName:@"WXLoginNotificaton" object:@{@"code":aresp.code}];//微信登录通知

                NSLog(@"errCode---->>>%@",aresp.code);

            }else{

                [[NSNotificationCenter defaultCenter]postNotificationName:@"wxshareNotification" object:nil];//微信分享通知

            }

        }

            break;

        case-1://普通错误类型

            //            WXSuccess          = 0,    /**< 成功    */

            //            WXErrCodeCommon    = -1,  /**< 普通错误类型    */

            //            WXErrCodeUserCancel = -2,  /**< 用户点击取消并返回    */

            //            WXErrCodeSentFail  = -3,  /**< 发送失败    */

            //            WXErrCodeAuthDeny  = -4,  /**< 授权失败    */

            //            WXErrCodeUnsupport  = -5,  /**< 微信不支持    */

            //do ...

            break;

        case-2://用户取消

        {  //do ...

            //            NSLog(@"---quxiao-----");

            if([resp isKindOfClass:[SendAuthResp class]]) {//判断是否是微信登录

                [SVProgressHUD showErrorWithStatus:@"微信登录授权取消"];

                [SVProgressHUD dismissWithDelay:1.5];

            }else{

                [SVProgressHUD showErrorWithStatus:@"微信分享取消"];

                [SVProgressHUD dismissWithDelay:1.5];

                [[NSNotificationCenter defaultCenter]postNotificationName:@"wxshareFailureNotification" object:nil];//微信分享失败通知

            }

        }

            break;

        default:

            break;

    }

}

7.登录点击事件发起(下面内容全部是在登录控制器内操作的)

A.发起之前先在viewDidLoad内注册一下通知

- (void)viewDidLoad {

    [super viewDidLoad];

    //注册通知

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(uploadCodeToServer:) name:@"WXLoginNotificaton" object:nil];

}

B.点击登录按钮后发起登录授权

-(void)loginButtonclick

{

    if ([WXApi isWXAppInstalled]) {

        SendAuthReq*req = [[SendAuthReqalloc]init];

        req.scope = @"snsapi_userinfo";

        req.state=@"App";

        [WXApisendReq:req];

    }

    else{

        [self setupAlertController];

    }

}

- (void)setupAlertController {

    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"温馨提示" message:@"请先安装微信客户端" preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *actionConfirm = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil];

    [alertaddAction:actionConfirm];

    [self presentViewController:alert animated:YES completion:nil];

}

C.注册通知时我们调用了一个方法uploadCodeToServer:他的参数是NSNotification

如下:

-(void)uploadCodeToServer:(NSNotification*)notification{

内部调用我们自己上传给自己服务器的东西,具体内容和服务器端人员商量

}

以上便是这次APP接入微信登录的全部步骤,只是自己操作的步骤,若有不足,还请大家予以斧正,谢谢

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容