前言

分享到微信朋友圈的功能早已经有了,但微信登录推出并不久,文档写的也并不是很清楚,这里记录分享一下。

声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com

正文

一、准备

注册、认证步骤自己来。微信开放平台:https://open.weixin.qq.com

二、代码

2.1 唤起微信登录

参考官网文档:资源中心/移动应用开放/接入指南/Android接入指南

privateIWXAPImWeixinAPI;

private voidloginWithWeixin(){
if(mWeixinAPI== null){
mWeixinAPI=WXAPIFactory.createWXAPI( this,WEIXIN_APP_ID, false);
}

if(!mWeixinAPI.isWXAppInstalled()){
//提醒用户没有按照微信
return;
}

mWeixinAPI.registerApp(WEIXIN_APP_ID);

SendAuth.Reqreq= newSendAuth.Req();
req.scope=WEIXIN_SCOPE;
req.state=WEIXIN_STATE;
mWeixinAPI.sendReq(req);
}

WEXIN_SCOPE 这里填的snsapi_userinfo,用snsapi_base提示没权限。

WEIXIN_STATE 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验。

不出意外就能唤起微信登录了。

2.2 接收微信的请求及返回值

在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,参考文档在AndroidManifest.xml注册Activity。

public classWXEntryActivity extendsActivity{

@Override
protected voidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);

handleIntent(getIntent());
}

@Override
protected voidonNewIntent(Intentintent){
super.onNewIntent(intent);
handleIntent(intent);
}

private voidhandleIntent(Intentintent){
SendAuth.Respresp= newSendAuth.Resp(intent.getExtras());
if(resp.errCode==BaseResp.ErrCode.ERR_OK){
// 用户同意
}
}
}

注意,这里和微信的例子写的有点不一样,不过结果是一样的,这个能取到code等信息,测试返回数据如下:

E/WXEntryActivity(14288):onCreate...key:_wxapi_sendauth_resp_statexxx
E/WXEntryActivity(14288):onCreate...key:_wxapi_sendauth_resp_tokenxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
E/WXEntryActivity(14288):onCreate...key:_mmessage_appPackagecom.tencent.mm
E/WXEntryActivity(14288):onCreate...key:_wxapi_baseresp_transaction null
E/WXEntryActivity(14288):onCreate...key:_wxapi_sendauth_resp_langzh_CN
E/WXEntryActivity(14288):onCreate...key:_wxapi_command_type1
E/WXEntryActivity(14288):onCreate...key:_mmessage_content null
E/WXEntryActivity(14288):onCreate...key:_wxapi_sendauth_resp_country null
E/WXEntryActivity(14288):onCreate...key:_mmessage_checksum[B@426358e8
E/WXEntryActivity(14288):onCreate...key:wx_token_keycom.tencent.mm.openapi.token
E/WXEntryActivity(14288):onCreate...key:_wxapi_sendauth_resp_url xxxxxxxxxxx
E/WXEntryActivity(14288):onCreate...key:_mmessage_sdkVersion570490883
E/WXEntryActivity(14288):onCreate...key:_wxapi_baseresp_errcode0
E/WXEntryActivity(14288):onCreate...key:_wxapi_baseresp_errstr null
E/WXEntryActivity(14288):onCreate...key:_wxapi_baseresp_openId null

xxx部分的内容我已经隐掉了,拿到code就能拿到access——token了,后续依据文档调用即可。

这里你可以把WXEntryActivity的theme弄成透明的,然后再弹起来一个ProgressDialog进行后续的操作(提交你自己的服务器),就能和现有的界面完全融合了。

三、注意:

3.1 获取签名必须用release包。(所以你会发现微信、微博SDK取得值是一样,所以如果已经有了微博的签名可以直接拷贝到微信使用)

结束

纠结到底是微信登录还是QQ登录,,,,

更多相关文章

  1. Android(安卓)Studio添加volley以及volley的简单用法
  2. 网络图片浏览器
  3. Android(安卓)HTTP GET/POST
  4. Cocos2d-x官方中文文档
  5. Android(安卓)Web App官方文档翻译第四章:调试
  6. Applying Styles and Themes - 应用Style和Theme - Android官方
  7. Android(安卓)Geofence的学习(二)继续翻译官方文档
  8. Android(安卓)中SwipeRefreshLayout刷新动画不显示的问题
  9. Android使用HttpURLConnection请求网络资源

随机推荐

  1. 企业sudo权限规划详解 (实测一个堆命令搞
  2. 磁盘空间空间不足的原因及表现与解决办法
  3. Cocos Creator之摇杆的实现
  4. FPM包定制完成 (等待实现 里程碑 1 和
  5. chkconfig的原理 和添加开机自启动的办法
  6. sed 增删改查详解以及 sed -i原理
  7. 4.25课堂笔记(网络)
  8. rsync服务搭建--2018.5.8 [优化后最终版]
  9. 蚂蚁集团技术专家山丘:性能优化的常见模式
  10. rsync服务