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微信登陆,如需转载请自行联系原博主。



目录
相关文章
|
11月前
|
存储 小程序 数据库
【微信小程序开发】之微信授权登陆
【微信小程序开发】之微信授权登陆
563 0
|
2月前
|
开发工具 Android开发
|
4月前
|
Java Linux API
微信API:探究Android平台下Hook技术的比较与应用场景分析
微信API:探究Android平台下Hook技术的比较与应用场景分析
|
4月前
|
小程序 前端开发 Android开发
Android企业微信分享到小程序
Android企业微信分享到小程序
46 0
|
4月前
微信登陆报错:redirect_uri域名与后台配置不一致,错误码:10003 微信支付报错 微信登录报错 微信开发
微信登陆报错:redirect_uri域名与后台配置不一致,错误码:10003 微信支付报错 微信登录报错 微信开发
66 0
|
10月前
|
小程序 JavaScript 前端开发
微信小程序(十七)小程序监听返回键跳转事件(安卓返回也适用)
onUnload:function(){ wx.redirectTo({ url: '../index/index' }) wx.navigateTo({ url: '../index/index' }) wx.switchTab({ url: '../../member/member' }) }
892 0
|
5月前
|
小程序
微信小程序用户登陆和获取用户信息功能实现
微信小程序用户登陆和获取用户信息功能实现
96 0
|
5月前
|
前端开发 NoSQL 数据库
如何设计 QQ、微信、微博、Github 等等,第三方账号登陆 ?(附表设计)
如何设计 QQ、微信、微博、Github 等等,第三方账号登陆 ?(附表设计)
58 1
|
5月前
|
前端开发 NoSQL 数据库
设计 QQ、微信等第三方账号登陆
设计 QQ、微信等第三方账号登陆
59 0
设计 QQ、微信等第三方账号登陆
|
小程序 Android开发 iOS开发
微信小程序-虚拟支付:适用场景 / iPhone调试用支付成功,Android调用失败,提示“小程序支付能力已被限制” / “errMsg“.“requestPayment:fail banned”
微信小程序-虚拟支付:适用场景 / iPhone调试用支付成功,Android调用失败,提示“小程序支付能力已被限制” / “errMsg“.“requestPayment:fail banned”
495 0