一:首先在CocosCreater工程编写点击微信登录按钮调用OC的逻辑
if (cc.sys.OS_ANDROID == cc.sys.os) { // 安卓平台
} else if (cc.sys.OS_IOS == cc.sys.os) { //ios平台
//点击微信支付调用OC AppConTroller类的 showWeChatLogin方法,
jsb.reflection.callStaticMethod("AppController", "showWeChatLogin");
}
二:将CocosCreater游戏,构建发布,发布平台选择iOS即可
三:打开build完成后的ios工程,默认在proj.ios_mac文件夹中
四:加入微信登录SDK,加入步骤可以参考微信开放平台的ios接入指南,我用的是手动集成
步骤1:将SDK文件中包含的 libWeChatSDK.a,WXApi.h,WXApiObject.h 三个文件添加到你所建的工程中、
步骤2: 在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id(如下图所示)[图片上传中...(1751531466778_.pic_hd.jpg-2d05aa-1531466788605-0)]
步骤3:在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin(如下图所示)。
五:在代码中使用开发工具包
[1] 要使你的程序启动后微信终端能响应你的程序,必须在代码中向微信终端注册你的id。(如下图所示,在AppController 的 didFinishLaunchingWithOptions 函数中向微信注册id)。[2] 重写AppDelegate的handleOpenURL和openURL方法:
六:现在我们按照微信登录开发指引https://mp.weixin.qq.com/s/kKKIsEVCu7Tw0t5mK_Wkiw来请求具体的数据
微信登录授权流程大致分为以下步骤:
1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;
3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
第一步:请求CODE,我们需要点击微信登录按钮调用(根据CocosCreater工程里面编写了点击微信登录按钮调用OC的逻辑,即是调用AppController类里面的showWeChatLogin方法),我们这里在showWeChatLogin里面实现请求Code的代码,这边我的逻辑参考了微信的demo,放在WXApiManager里面处理!
微信客户端会被拉起,跳转至授权界面,用户在该界面点击允许或取消,SDK通过SendAuth的Resp返回code数据给调用方
第二步:通过code获取access_token
获取第一步的code后,App要将code传回App的后台服务器,后台服务器请求以下链接获取access_token:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
参数:appid和secret填入在申请移动应用的时候开放平台分配的字段,可在应用详情中获得,code填写第一步获得的code,grant_type固定填写为authorization_code。
注意:access_token是调用授权关系接口的调用凭证,由于access_token有效期(目前为2个小时)较短,当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天。
第三步通过access_token调用接口
获得access_token后,通过一下接口可以获得用户基本信息。
http请求方式: GET
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
拿到用户信息后,我们需要回调给CocosCreater 如图:
CocosCreater 那边处理