采用原生微信SDK实现第三方登录

一般第三方登录都有集成好的SDK,比方说友盟的 shareSDK的 ,都集成的非常好了,知道要按照步骤配置就可以实现功能了.但是笔者在做微信第三方登陆的时候,发现shareSDK直接把注册微信的appSecret暴露在代码中,私底下认为是有问题的,于是查看了微信原生的api ,配合后台做了微信原生SDK的登录功能.

1.去微信官网下载最新sdk,并且按照步骤注册微信信用,比方说你获取到道德微信的id 是
static NSString* wechat_AppId =@"wx1234567789";
在AppDelegate.m中导入 WXApi

import "WXApi.h"

并且让AppDelegate 类遵守 WXApiDelegate 协议

  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [WXApi registerApp:wechat_AppId withDescription:@"Wechat"];
    }

并且实现以下方法
//ios9 之前

  • (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
    {
    return [WXApi handleOpenURL:url delegate:self];

}

-(BOOL)application:(UIApplication)app openURL:(NSURL)url options:(NSDictionary *)options
{
return [WXApi handleOpenURL:url delegate:self];
}

  • (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
    {
    if([sourceApplication isEqualToString:@"com.tencent.xin"])
    {
    return [WXApi handleOpenURL:url delegate:self];
    }
    return YES;

实现微信代理的协议方法
-(void) onResp:(BaseResp*)resp
{
NSString *strMsg = [NSString stringWithFormat:@"errcode:%d", resp.errCode];

if ([resp isKindOfClass:[SendAuthResp class]])
{   SendAuthResp *aresp = (SendAuthResp *)resp;
    NSString* state=aresp.state;
    NSString *code = aresp.code;
    DDLog(@"---code--%@-----",code);
    if ([state isEqualToString:@"Apps"]&&aresp.errCode==0)
   {
        if (code) {
            [self getWeiXinOpenId:code];
               }
        }
 
   }

}

通过code获取access_token,openid,unionid 此处需要后台接口配合

  • (void)getWeiXinOpenId:(NSString *)code{

    //发送网络请求获取到 access_token,openid,unionid 等参数
    具体如何设计需要和后台人员协商制定

//登录成功后发送通知通知回调处理事件
[[NSNotificationCenter defaultCenter]postNotificationName:@"wechatSuccess" object:nil userInfo:returnValue];

}

总的来说就是微信授权登录时分两部分完成的 ,第一步是点击弹出一个微信授权 的页面 ,在你点击确认授权后会调用 -(void) onResp:(BaseResp*)resp 从而获取到那个code码 ,然后根据这个code码 去后台那边获取openid 和access_token等.这样做的好处是数据和授权在后台都有记录,可以让微信号和自己的注册登陆的账号关联起来使用

你可能感兴趣的:(采用原生微信SDK实现第三方登录)