绑定微信和微信登录其实都是一样的

绑定微信登录后 获取的是用户的信息

没有绑定微信的情况下获取的微信的信息

看看下面微信登录和微信绑定的代码

//微信登录
if (!mWxApi.isWXAppInstalled()) {Toast.makeText(context, "您还没有安装微信哦~", Toast.LENGTH_SHORT).show();
} else {final SendAuth.Req req = new SendAuth.Req();req.scope = "snsapi_userinfo";req.state = "wechat_sdk_login";mWxApi.sendReq(req);
}
//绑定微信
@Override
public void onClick(View view) {SendAuth.Req req = new SendAuth.Req();req.scope = "snsapi_userinfo";req.state = "wechat_sdk_bind";App.mWxApi.sendReq(req);
}

聪明的你一定发现的不一样的地方

对,没错,(req.state =)就是这个地方 这个是一状态值 用来区分是微信登录还是微信绑定

接下来就是这个微信的回调类里面的处理

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {private static final int RETURN_MSG_TYPE_LOGIN = 1;private static final int RETURN_MSG_TYPE_SHARE = 2;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);//如果没回调onResp,八成是这句没有写App.mWxApi.handleIntent(getIntent(), this);}// 微信发送请求到第三方应用时,会回调到该方法@Overridepublic void onReq(BaseReq req) {}// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法//app发送消息给微信,处理返回消息的回调@Overridepublic void onResp(BaseResp resp) {Log.d("WXEntryActivity", "错误码 : " + resp.errCode + "");switch (resp.errCode) {case BaseResp.ErrCode.ERR_AUTH_DENIED:case BaseResp.ErrCode.ERR_USER_CANCEL:if (RETURN_MSG_TYPE_LOGIN == resp.getType()) {Toast.makeText(this, "登录失败", Toast.LENGTH_SHORT).show();}if (RETURN_MSG_TYPE_SHARE == resp.getType()) {Toast.makeText(this, "分享失败", Toast.LENGTH_SHORT).show();}break;case BaseResp.ErrCode.ERR_OK:switch (resp.getType()) {case RETURN_MSG_TYPE_LOGIN://拿到了微信返回的code,立马再去请求access_tokenString code = ((SendAuth.Resp) resp).code;Toast.makeText(this, ""+code, Toast.LENGTH_SHORT).show();//这里判断类型是微信登录还是绑定微信账号String state = ((SendAuth.Resp) resp).state;//判断是绑定微信账号if (state.equals("wechat_sdk_bind")) {/** 绑定微信* */doBindWxHttp(code);} else {/** 微信登录 获取用户信息**/getAccessToken(code);}break;case RETURN_MSG_TYPE_SHARE:Toast.makeText(this, "微信分享成功", Toast.LENGTH_SHORT).show();finish();break;}break;}//支付成功if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("支付结果");builder.setMessage(resp.errCode + "");builder.show();
//            Log.d("info", "onPayFinish,errCode=" + resp.errCode);
//            if (resp.errCode == 0) {
//                SharedPreUtils.put(this,"success",0);
//                Toast.makeText(this, "支付成功", Toast.LENGTH_SHORT).show();
//                Intent intent = new Intent("ACTION_PAY");
//                sendBroadcast(intent);
//                this.finish();
//            } else if (resp.errCode == -1) {
//                Toast.makeText(this, "配置错误", Toast.LENGTH_SHORT).show();
//                this.finish();
//            } else if (resp.errCode == -2) {
//                Toast.makeText(this, "用户取消", Toast.LENGTH_SHORT).show();
//                this.finish();
//            }
//        }else {
//            Toast.makeText(this, resp.errStr, Toast.LENGTH_SHORT).show();
//        }}}private void getAccessToken(String code) {Map<String, String> map = new HashMap<>();map.put("code", code);new HttpHelper(this).post("/techApi/user/v1/weChatLogin",map,null,false,false).result(new HttpListener() {@Overridepublic void success(String data) {if (data != null){Toast.makeText(WXEntryActivity.this, ""+data, Toast.LENGTH_SHORT).show();Log.i("TAG","WxBind"+data);LoginEntity loginEntity = new Gson().fromJson(data, LoginEntity.class);LoginEntity.ResultBean result = loginEntity.getResult();String nickName = result.getNickName();String headPic = result.getHeadPic();int userId = result.getUserId();String sessionId = result.getSessionId();SharedPreUtils.put(WXEntryActivity.this, "nickName", nickName);SharedPreUtils.put(WXEntryActivity.this, "headPic", headPic);SharedPreUtils.put(WXEntryActivity.this, "userId", userId);SharedPreUtils.put(WXEntryActivity.this, "sessionId", sessionId);SharedPreUtils.put(WXEntryActivity.this,"SUCCESSUP",true);SharedPreUtils.put(WXEntryActivity.this, "isLogin", true);Toast.makeText(WXEntryActivity.this, ""+nickName, Toast.LENGTH_SHORT).show();Toast.makeText(WXEntryActivity.this, ""+headPic, Toast.LENGTH_SHORT).show();Toast.makeText(WXEntryActivity.this, ""+userId, Toast.LENGTH_SHORT).show();Toast.makeText(WXEntryActivity.this, ""+sessionId, Toast.LENGTH_SHORT).show();startActivity(new Intent(WXEntryActivity.this, MainActivity.class));finish();}}@Overridepublic void fail(String error) {}});}//绑定微信账号private void doBindWxHttp(String code) {Map<String, String> map = new HashMap<>();map.put("code", code);new HttpHelper(this).post("/techApi/user/verify/v1/bindWeChat", map, null, false, false).result(new HttpListener() {@Overridepublic void success(String data) {SignEntity signEntity = new Gson().fromJson(data, SignEntity.class);if (signEntity.getStatus().equals("0000")) {Toast.makeText(WXEntryActivity.this, "" + data, Toast.LENGTH_SHORT).show();//绑定完微信进行做任务doTaskHttp();finish();} else {Toast.makeText(WXEntryActivity.this, "绑定失败", Toast.LENGTH_SHORT).show();finish();}}@Overridepublic void fail(String error) {}});}//绑定完微信进行做任务private void doTaskHttp() {Map<String, String> map = new HashMap<>();map.put("taskId", 1007+"" );new HttpHelper(this).post("techApi/user/verify/v1/doTheTask", map, null, false, false).result(new HttpListener() {@Overridepublic void success(String data) {SignEntity signEntity = new Gson().fromJson(data, SignEntity.class);String status = signEntity.getStatus();if (status.equals("0000")) {Toast.makeText(WXEntryActivity.this, "做任务成功", Toast.LENGTH_SHORT).show();} else {Toast.makeText(WXEntryActivity.this, "做任务失败", Toast.LENGTH_SHORT).show();}}@Overridepublic void fail(String error) {}});}}

我们在微信拉起成功之后返回到了(case BaseResp.ErrCode.ERR_OK:) 这里

在这里我们获取code值 然后获取状态值也就是上面所说的看看究竟是微信登录和绑定微信

String state = ((SendAuth.Resp) resp).state;

获取state值之后判断是登录还是绑定

if (state.equals("wechat_sdk_bind")) {

/* * 绑定微信 * */

doBindWxHttp(code);

} else {

/* * 微信登录 获取用户信息 **/

getAccessToken(code);

}

判断完去执行该执行的方法就可以了

具体的话就说一下配置吧

第一步:导入微信的依赖

compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

第二步:App下进行初始化和注册(APPID的话自己申请)

mWxApi = WXAPIFactory.createWXAPI(this, "wx4c96b6b8da494224", false);
// 将该app注册到微信
mWxApi.registerApp("wx4c96b6b8da494224");

第三步:创建微信回调的包(一定要在app下创建包名)(包名一定要一致)

wxapi

第四步:创建微信的回调类(在wxapi包下创建)(类名一定要一致)

WXEntryActivity

第五步:清单文件进行注册

<activityandroid:name=".wxapi.WXEntryActivity"
//这一行一定要加android:exported="true" />

大功告成.....(不理解的请留言)

Android 微信套餐之绑定微信相关推荐

  1. 对于微信二维码相关官方文档的一些注解(微信登录和绑定微信、关注公众号)

    转载自:https://www.jianshu.com/p/d533c69be034 由于微信官方文档对此的描述虽然还可以,但是还是有一些让人疑惑的地方,所以笔者做了一些注解,希望对大家有所帮助 为什 ...

  2. 微信公众平台 绑定微信用户OpenID与第三方业务账号

    转自:http://www.abyssly.com/2013/09/20/wx_bind/  (原作者的思路蛮清晰的,赞一个!) 最近由于工作需要,接触了微信公众号的开发.业务上要求绑定微信用户和系统 ...

  3. android微信登录用户绑定,微信授权登陆接入第三方App(步骤总结)Android

    Linux的学习--crontab 之前了解过一点crontab,前段时间比较闲,就熟悉了一下,今天总结记录一下. crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指 ...

  4. 【功能业务篇】APP授权微信登录、绑定账号测试思考

    参考https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify ...

  5. Android实现绑定微信公众号,获取相对公众号的唯一openId

    Android绑定微信公众号.获取相对公众号的唯一openId 注意:为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID,如果需要在多公众号.移动应用之间做用户共通,则需前往微信开放平台 ...

  6. Android:微信授权登录与微信分享全解析

    前言 在移动互联网浪潮中,联网APP已经把单机拍死在沙滩上,很多公司都希望自家应用能够有一套帐号系统,可是许多用户却并不一定买账:我凭啥注册你家应用的帐号?微博,微信,QQ几乎成了每个人手机中的必装应 ...

  7. Android开发-UI界面--类微信页面设计

    Android开发-UI界面–类微信页面设计 一.功能说明 设计一个类似微信的主页面框架,UI布局为上中下结构,包含了四个tag页面 二.开发技术 ​ 本次用到了layout.xml.控件.监听.fr ...

  8. 第三方网站实现绑定微信登陆

    最近在公司负责一个ROR项目,基于Rabel的论坛产品,老板想把这个产品植入微信,让我做微信绑定登陆.微信开发文档还是很不错的,折腾了几天,把这个功能拿下了. 微信获取用户资料文档:http://mp ...

  9. java 绑定微信号开发_Java开发中的更多常见危险信号

    java 绑定微信号开发 在< Java开发中的常见危险信号>一文中,我研究了一些不一定本身就是错误或不正确的做法,但它们可能表明存在更大的问题. 这些"红色标记"类似 ...

最新文章

  1. SOJ 8064 Whack the Groundhog
  2. Ubuntu 16.04 Spark单机环境搭建
  3. 病毒周报(100111至100117)
  4. linux下shell的工作原理
  5. unittest里discover用法_unittest框架核心要素及应用
  6. 改变support中AlertDialog的样式
  7. mysql的连接池配置文件,数据库连接池/配置文件数据库连接池
  8. 当我们谈论深度学习时,我们在谈论什么?
  9. 简述div标签和span标签的不同_div与span的区别是什么?
  10. spring-boot 加载本地静态资源文件路径配置
  11. 1036: [ZJOI2008]树的统计Count(树链剖分)
  12. 通过删除注册表破解plsql
  13. Java 开发必看的 5个 Github 开源项目
  14. 代码版本控制用SVN还是Git好?
  15. 算法学习(五)—— 广度优先搜索
  16. 拯救期末!大四留学生发“论文机器人”,替你读文献给方向调格式,已被ACL2019收录
  17. 移动端border-radius绘制圆点不圆
  18. 【笔记】设计模式 | 5种设计模式笔记整理
  19. Cocos Creator皮毛功能之拖动多选扑克麻将
  20. Java实现几分钟之后调度任务的定时器

热门文章

  1. saltstack(自动化运维工具)——介绍、安装、部署+远程执行
  2. HDU 2016年中国大学生程序设计竞赛(合肥)-重现赛(感谢安徽大学)
  3. 让企业零成本拥有自己独立的企业网站不再是难事
  4. 只知道SQL数据库?又一国产数据库语言诞生了
  5. Linux中脚本实现倒计时【两种方法:算术法和显示法】
  6. 软件测试(测试用例)编写之俗手、本手、妙手
  7. 不谋一时不足以谋一域_“不谋万世者不足谋一时,不谋全局者不足谋一域”是什么意思?...
  8. 基于链表实现的珂朵莉树
  9. 12年春运火车票预售时间
  10. python-爬取古诗文网古诗