Android接入微信SDK之一:发起微信授权登录
1.重要的事情首先说!
包名、应用签名、app id 三者都必须和在腾讯上申请的一致!!!否则将不能成功。
包名:就是在腾讯上申请的包名
应用签名:使用微信官网提供的《签名生成工具》(这个工具是一个apk安装包)安装到手机上获取包的签名(先将你的程序安装到手机上,再安装签名生成工具,在工具上输入你程序包名就可以获得)
app id:微信申请后可获得
2.使用默认值创建一个android项目(包名必须为在腾讯申请的包名!!!)
3.在默认界面上增加一个Button按钮,方便模拟登陆发起


3.新增一个Constans.java文件用于记录全局的常量,结构如下(其中com.yiyou.game.d...r就是在微信上申请的包名)

①Constants.java中的内容如下:
public class Constants {
public static final String APP_ID = "wxxxxxxx"; //替换为申请到的app id
public static IWXAPI wx_api; //全局的微信api对象
}
②MainActivity.java中的内容如下:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建微信api并注册到微信
Constants.wx_api = WXAPIFactory.createWXAPI(MainActivity.this, Constants.APP_ID, true);
Constants.wx_api.registerApp(Constants.APP_ID);
Button btn = (Button)findViewById(R.id.button1);//得到按钮
btn.setOnClickListener(new OnClickListener() { //注册按钮点击事件
@Override
public void onClick(View v) {
//发起登录请求
final SendAuth.Req req = new SendAuth.Req();
req.scope = "snsapi_userinfo";
req.state = "wechat_sdk_demo_test";
Constants.wx_api.sendReq(req);
}
});
}
}
③这时候就可以发起微信登录了,但是要得到微信的返回结果,还需要下面的步骤
4.获得微信调用的反馈
①在包名下新增wxapi文件夹(这个文件夹名字是微信官方规定的,必须一致)

②在wxapi文件夹下新增继承于Activity并实现IWXAPIEventHandler接口的WXEntryActivity类(这个类名是微信官方规定的,必须一致)

③在eclipse中显示结构如下:

④WXEntryActivity.java文件代码如下:
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Constants.wx_api.handleIntent(getIntent(), this);
}
//微信请求相应
@Override
public void onReq(BaseReq baseReq) {
}
//发送到微信请求的响应结果
@Override
public void onResp(BaseResp resp) {
switch (resp.errCode) {
case BaseResp.ErrCode.ERR_OK:
Log.i("WXTest","onResp OK");
if(resp instanceof SendAuth.Resp){
SendAuth.Resp newResp = (SendAuth.Resp) resp;
//获取微信传回的code
String code = newResp.code;
Log.i("WXTest","onResp code = "+code);
}
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
Log.i("WXTest","onResp ERR_USER_CANCEL ");
//发送取消
break;
case BaseResp.ErrCode.ERR_AUTH_DENIED:
Log.i("WXTest","onResp ERR_AUTH_DENIED");
//发送被拒绝
break;
default:
Log.i("WXTest","onResp default errCode " + resp.errCode);
//发送返回
break;
}
finish();
}
}
5.在AndroidManifest.xml中对WXEntryActivity进行配置
①增加权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
②增加WXEntryActivity的配置
<activity
android:exported="true"
android:name=".wxapi.WXEntryActivity"
android:launchMode="singleTop"
android:theme="@android:style/Theme.NoDisplay"/>
③总体情况如截图

6.编译生成运行,即可发起微信登录并得到微信返回。
如果还是不行,那么可能由以下问题引起:
1.app id是否正确?
2.包名是否和申请时填写的一致?
3.应用签名是否和申请时填写的一致?(可以用签名生成工具对比一下)通常可能发生的情况是,申请用的签名包,调试用的非签名包,这种情况很常见。
4.WXEntryActivity.java文件的位置是否正确
5.AndroidManifest.xml中的配置是否正确?
官方文档:《移动应用微信登录开发指南》
以上,发起微信授权登录部分完。
Android接入微信SDK之一:发起微信授权登录的更多相关文章
- vue+uni-app商城实战 | 第一篇:【有来小店】微信小程序快速开发接入Spring Cloud OAuth2认证中心完成授权登录
一. 前言 本篇通过实战来讲述如何使用uni-app快速进行商城微信小程序的开发以及小程序如何接入后台Spring Cloud微服务. 有来商城 youlai-mall 项目是一套全栈商城系统,技术栈 ...
- 微信公众号发起微信支付 c#
tenpay.dll: MD5Util.cs using System; using System.Collections.Generic; using System.Linq; using Syst ...
- 微信小程序开发用户授权登录
用wx.login获取登录凭证code <!--pages/user/index.wxml--> <view hidden='{{boolean}}'> <view wx ...
- 微信公众号开发用户授权登录报"redirect_uri 参数错误"错误
微信公众号开发 授权获取用户信息报错 "redirect_uri 参数错误" 出现这个情况要检查下 微信公众号配置了网页授权域名 在这里配置微信公众号redirect_uri中的域 ...
- 微信小程序发起微信支付
点击链接查看详情:(支付中配置参数需要从后台得到->签名需要从微信申请才可以得到) https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-pay.h ...
- springboot微信sdk方式进行微信支付
https://blog.csdn.net/xsg6509/article/details/80342744
- iOS-不用微信SDK唤起微信支付
作者:TianBai 原文链接:http://www.jianshu.com/p/8930b4496023 要想知道微信SDK是如何调起微信客户端,那么咱们先看看微信SDK到底做了什么 前期准备 接入 ...
- 【Win10 UWP】微信SDK基本使用方法和基本原理
上回讲到,作为一个长期散播温暖,散播希望的小清新无公害WP开发者,继QQ SDK之后,又把UWP微信SDK这茬了结了,仅供学习交流. 1.安装微信SDK for UWP 微信官方此前明确说明短时间内暂 ...
- 【转】【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9057257 由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字 ...
- Android之QQ授权登录获取用户信息
有时候我们开发的app须要方便用户简单登录.能够让用户使用自己的qq.微信.微博登录到我们自己开发的app. 今天就在这里总结一下怎样在自己的app中集成QQ授权登录获取用户信息的功能. 首先我们打开 ...
随机推荐
- 电影编码JPEG2000与H.264
电影的第三次革命是数字电影的诞生,数字电影取代了胶片,那么数字电影就一定有其独特的封装(压缩)格式.在网络上,我们经常见到许多视频格式,诸如mp4.mkv.flv.rmvb等,这些都是在通用计算机上播 ...
- Spring Boot 2(一):Spring Boot 2.0新特性
Spring Boot 2(一):Spring Boot 2.0新特性 Spring Boot依赖于Spring,而Spring Cloud又依赖于Spring Boot,因此Spring Boot2 ...
- mycat下mysql jdbc connector使用高版本报PacketTooBigException异常
如下所示: 5.1.30切换为mysql-connector 5.1.46/40,报错,可参考https://blog.csdn.net/n447194252/article/details/7530 ...
- 在android下使用i2c tools
在android使用i2c tools访问i2c,很方便,可以在https://launchpad.net/ubuntu/+source/i2c-tools 下载最新的i2c tools. 把i2c- ...
- 比较实用的前端 js框架 ,组件 汇总
一.js 前端ui框架 Kendo UI 商用收费,组件丰富,界面简洁美观,有jQuery和angular两个js的版本 Webix 商用收费,组件丰富,界面特别美观 JQwidgets 商用收费,丰 ...
- ant____<project>标签的使用与含义
<project> 标记项目,例如: <project name = "java-ant project" default = "run"&g ...
- 将svn下载的项目转化为java project
1.选中项目,右键点击弹出窗口,点击窗口中的[Properties],弹出[Properties for test]窗口, 如下: 2.点击窗口中的[Project Facets],右边显示[Conv ...
- C# 字典常用方法
/* ######### ############ ############# ## ########### ### ###### ##### ### ####### #### ### ####### ...
- Python 正则表达式学习
摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2, ...
- yum命令showduplicates安装指定版本包
默认情况下,我们用yum list 或者 yum install 的时候,yum会默认选择最新的版本. 如果我们需要安装指定版本的某个软件包,以使之能够和我们现有环境的软件包版本匹配,那么就需要用到s ...