Android 实现微信登录详解

 更新时间:2016年07月21日 09:55:04   投稿:lqh  
本文主要介绍Android 微信登录分享朋友圈,这里给大家详细介绍了Android微信登录的详细流程,有需要的小伙伴可以参考下

前言

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

 正文

 一、准备

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

 二、 代码

  2.1 唤起微信登录

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

private IWXAPI mWeixinAPI;

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

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

    mWeixinAPI.registerApp(WEIXIN_APP_ID);

    SendAuth.Req req = new SendAuth.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 class WXEntryActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    handleIntent(getIntent());
  }

  @Override
  protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    handleIntent(intent);
  }

  private void handleIntent(Intent intent) {
    SendAuth.Resp resp = new SendAuth.Resp(intent.getExtras());
    if (resp.errCode == BaseResp.ErrCode.ERR_OK) {
      //用户同意
    }
  }
}

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

 E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_state xxx
    E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_token xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    E/WXEntryActivity(14288): onCreate...key:_mmessage_appPackage com.tencent.mm
    E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_transaction null
    E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_lang zh_CN
    E/WXEntryActivity(14288): onCreate...key:_wxapi_command_type 1
    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_key com.tencent.mm.openapi.token
    E/WXEntryActivity(14288): onCreate...key:_wxapi_sendauth_resp_url xxxxxxxxxxx
    E/WXEntryActivity(14288): onCreate...key:_mmessage_sdkVersion 570490883
    E/WXEntryActivity(14288): onCreate...key:_wxapi_baseresp_errcode 0
    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取得值是一样,所以如果已经有了微博的签名可以直接拷贝到微信使用)

以上对Android 微信登录分享朋友圈的功能,有需要的朋友可以看下。

相关文章

  • Android登录记住多个密码的实现方法

    Android登录记住多个密码的实现方法

    通过在popouWindow里面加上ListView,数据是把List以字符串按照JSON的样式存入本地,下面通过实例代码给大家介绍android登录记住多个密码的实现方法,需要的的朋友参考下吧
    2017-07-07
  • Android监听ScrollView滑动距离的简单处理

    Android监听ScrollView滑动距离的简单处理

    这篇文章主要为大家详细介绍了Android监听ScrollView滑动距离的简单处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Android中EditText显示明文与密码的两种方式

    Android中EditText显示明文与密码的两种方式

    这篇文章主要介绍了Android中EditText显示明文与密码的两种方式,非常不错,具有参考借鉴价值,需要的盆友一起学习吧
    2016-08-08
  • Android ListView数据的分批显示功能

    Android ListView数据的分批显示功能

    本文通过实例代码给大家分享了Android ListView数据的分批显示功能,非常不错具有参考借鉴价值,需要的朋友参考下吧
    2017-04-04
  • 浅析Android文件管理器(项目一)

    浅析Android文件管理器(项目一)

    这篇文章主要介绍了浅析Android文件管理器(一)的相关资料,需要的朋友可以参考下
    2015-11-11
  • 利用Android模仿微信摄像圆环进度效果实例

    利用Android模仿微信摄像圆环进度效果实例

    圆环进度条,大家应该都见过,而这篇文章主要给大家介绍了关于利用Android模仿微信摄像圆环进度效果的相关资料,实现后的效果非常不错,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11
  • Android Zxing 转换竖屏扫描且提高识别率的方法

    Android Zxing 转换竖屏扫描且提高识别率的方法

    本篇文章主要介绍了Android Zxing 转换竖屏扫描且提高识别率的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Android Camera2 实现预览功能

    Android Camera2 实现预览功能

    最近在做一些关于人脸识别的项目,需要用到 Android 相机的预览功能。今天小编通过本文给大家分享Android Camera2 实现预览功能,感兴趣的朋友跟随小编一起看看吧
    2018-11-11
  • 浅谈Android Classloader动态加载分析

    浅谈Android Classloader动态加载分析

    这篇文章主要介绍了浅谈Android Classloader动态加载分析,详细的介绍了ClassLoader概念、分类,具有一定的参考价值,有兴趣的可以了解一下
    2018-03-03
  • Intent传递对象之Serializable和Parcelable的区别

    Intent传递对象之Serializable和Parcelable的区别

    Intent在不同的组件中传递对象数据的应用非常普遍,大家都知道在intent传递对象的方法有两种:1、实现Serializable接口、2、实现Parcelable接口,接下来通过本文给大家介绍Intent传递对象之Serializable和Parcelable的区别,感兴趣的朋友一起学习吧
    2016-01-01

最新评论