微信登录那点事

不久之前做过微信第三方登录,过程之后也遇到一些困难。在这里就把我做的过程给记录下来。
准备工作: 公司在微信开放平台注册项目的时候的APPID和APPSECRET(一般这个东西都是公司的运营部门去申请的)

第一步 :在app的gradle下面 (现在有没有更新就不太清楚,可以去微信开放平台上面去看 还有混淆我这里就粘贴了)
compile ‘com.tencent.mm.opensdk:wechat-sdk-android-with- mta:1.0.2’

第二步: 在Application的oncreate方法里面
IWXAPI sApi= WXEntryActivity.initWeiXin(this, APPID);

第三步 : 最重要的一步 在项目的根目录下面新建一个wxapi包然后在这个包下面新建一个类WXEntryActivity extends Activity implements IWXAPIEventHandler
然后在WXEntryActivity 的oncreate方法里面调用 MyApplication.sApi.handleIntent(getIntent(), this); 不然的话就不会回调过来。
implements IWXAPIEventHandler 重写 它的onResp方法的response里面返回得到code (这里的都是固定的格式 只需要把appid和appsecret换成自己的就行了 run(url)是异步向微信请求数据返回的是一个String类型的json)processGetAccessTokenResult(String respsonse)这个方法是在run(url)请求数据的成功回调里面调用
/**
* 获取授权口令
*/
private void getAccessToken(String code) {
String url = “https://api.weixin.qq.com/sns/oauth2/access_token?” +
“appid=” + APPID +
“&secret=” +APPSECRET+
“&code=” + code +
“&grant_type=authorization_code”;
run(url);
}

/**
* 处理获取的授权信息结果
* 在这个回调里面我们可以获取到和后台对接的数据 做到这一步就算是微信登录成功了 。tokenInfo 这个里面有我们想要的唯一标识。
* @param response 授权信息结果
*/
private void processGetAccessTokenResult(String response) {
// 验证获取授权口令返回的信息是否成功
if (validateSuccess(response)) {
// 使用Gson解析返回的授权口令信息
WXAccessTokenInfo tokenInfo = mGson.fromJson(response, WXAccessTokenInfo.class);
// 保存信息到手机本地
saveAccessInfotoLocation(tokenInfo);
// 获取用户信息
getUserInfo(tokenInfo.getAccess_token(), tokenInfo.getOpenid());
}
}

第四步: 第四步你肯定想象不到 如果你想调用微信登录
只需要 调用 loginWeixin(Context context, IWXAPI api)

/**
* 登录微信
*
* @param api 微信服务api
*/
public static void loginWeixin(Context context, IWXAPI api) {
// 判断是否安装了微信客户端
if (!api.isWXAppInstalled()) {
Toast.makeText(context.getApplicationContext(), “您还未安装微信客户端!”, Toast.LENGTH_SHORT).show();
return;
}
// 发送授权登录信息,来获取code
SendAuth.Req req = new SendAuth.Req();
// 应用的作用域,获取个人信息
req.scope = “snsapi_userinfo”;
/**
* 用于保持请求和回调的状态,授权请求后原样带回给第三方
* 为了防止csrf攻击(跨站请求伪造攻击),后期改为随机数加session来校验
*/
req.state = “app_wechat”;
api.sendReq(req);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值