Android微信登陆

前言

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

 

声明

欢迎转载,但请保留文章原始出处:) 

博客园:http://www.cnblogs.com

农民伯伯: http://over140.cnblogs.com 

 

正文

一、准备

注册、认证步骤自己来。微信开放平台: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取得值是一样,所以如果已经有了微博的签名可以直接拷贝到微信使用)

 

结束

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

转载:http://www.cnblogs.com/over140/p/4127271.html

时间: 2024-10-23 04:51:31

Android微信登陆的相关文章

应用-Android 用微信登陆是否需要 自己后台操作

问题描述 Android 用微信登陆是否需要 自己后台操作 最近做自己做一个应用,设置微信登陆,不清楚这块需不需要自己后台的支持 解决方案 Android微信登陆Android微信登陆Android 微信登陆 解决方案二: 如果需要持续记录用户状态,肯定是需要后台支持的 做社交什么的都必须要后台支持,不然换个手机,之前所有的设置全部没有了. 解决方案三: 需要,下次成功要告诉服务端,最好把微信的账号也绑定到服务端: 解决方案四: 如果要下次自动登录,需要后天支持的,将数据保存到本地 解决方案五:

Android调用微信登陆、分享、支付

前言:用了微信sdk各种痛苦,感觉比qq sdk调用麻烦多了,回调过于麻烦,还必须要在指定包名下的actvity进行回调,所以我在这里写一篇博客,有这个需求的朋友可以借鉴一下,以后自己别的项目有用到也有个找资料的地方. 一.微信登陆分三个步骤:   1).微信授权登陆   2).根据授权登陆code 获取该用户token   3).根据token获取用户资料   4).接收微信的请求及返回值 如果你的程序需要接收微信发送的请求,或者接收发送到微信请求的响应结果,需要下面3步操作:   a. 在你

Android调用微信登陆、分享、支付_Android

用了微信sdk各种痛苦,感觉比qq sdk调用麻烦多了,回调过于麻烦,还必须要在指定包名下的actvity进行回调,所以我在这里写一篇博客,有这个需求的朋友可以借鉴一下,以后自己别的项目有用到也有个找资料的地方. 一.微信登陆分三个步骤:   1).微信授权登陆   2).根据授权登陆code 获取该用户token   3).根据token获取用户资料   4).接收微信的请求及返回值 如果你的程序需要接收微信发送的请求,或者接收发送到微信请求的响应结果,需要下面3步操作:   a. 在你的包名

android 微信不能拉起验证界面

问题描述 android 微信不能拉起验证界面 SendAuth.Req req = new SendAuth.Req (); req.Scope = "snsapi_userinfo,snsapi_base"; req.State = "wechat_sdk_demo_test"; WXapi.SendReq (req); 可以进入微信登陆界面,但是输完之后,不能拉起 微信打开授权登录页: 不知道是怎么回事,急急急!!!! 解决方案 你需要修改你在平台上的应用签名

今天微信开放平台发布了一个内测的新功能微信登陆

摘要: 今天微信开放平台发布了一个内测的新功能微信登陆.微信登录是指移动应用和网站应用,可以通过接入该功能,让用户可以通过微信帐号来登录,降低注册门槛和用户流失率.此外, 今天"微信开放平台"发布了一个内测的新功能--微信登陆.微信登录是指移动应用和网站应用,可以通过接入该功能,让用户可以通过微信帐号来登录,降低注册门槛和用户流失率.此外,还会在经过用户同意后,将用户基本信息(头像.昵称.性别.地区.语言)提供给开发者. 微信登录当前处于邀请内测阶段,邀请已开通移动应用微信支付的帐号,

android 微信登录返回不经过onResp方法

问题描述 android 微信登录返回不经过onResp方法 android 做微信登陆,点击确认登录后返回并没有经过WXEntryActivity的onResp方法,无法获得返回的数据,求大牛点化,帮忙分析一下原因

Android微信5.0内测版Beta 2发布

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   前天晚上,腾讯向取得内测资格的用户推送了Android微信5.0内测版,从使用体验 来看,它在功能方面要比iOS版更加强大一些.     今天中午12点左右,腾讯又向用户推送了Amdroid微信5.0内测版Beta 2, 不过遗憾的是腾讯并没有公布任何更新说明,笔者在实际体验之后发现其功能方面相对前一个版本也没有任何变化,应该是以修复Bug为主的版本. Amdr

android微信聊天记录导出到电脑【微信安卓版技巧】

微信,对它又爱又恨!爱的是微信能替代很多手机通话短信,恨的是有些较早前的手机不能友好支持,比如ytkah之前用的i8000,挺上手的,就是没办法装微信,当时工作需要必须用微信,只好忍痛割爱买了个android手机.安卓手机还算可以吧,就是流量大户.占用内存太大了,经常会生成一个很大相册预览图的文件夹,有时拍照就提示空间不足,得先清理一下.等你清理完,妹子的媚眼不懂飞向哪个大叔身上了,哎! 腾讯出招了:通过腾讯电脑管家将微信聊天记录备份到电脑上 如果不想安装电脑管家,可以试试下面的方法androi

应用-微信登陆分享点击留在微信,不能执行回调方法

问题描述 微信登陆分享点击留在微信,不能执行回调方法 使用微信的分享SDK,集成后分享成功后点击返回原应用和留在微信中的留在微信按钮, 无法收到回调就执行不了写好的逻辑代码,怎么解决? 解决方案 sharesdk 微信登陆分享点击留在微信回调解决方案