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授权登录获取用户信息的功能. 首先我们打开 ...
随机推荐
- DGUT_FLY退役贴 && FunCfans毕业总结-竞赛篇
严格来说我们飞跃队是去年ECFinal之后就退役的,只是这几个月有一堆事情在那,考研的考研,求职的求职,都把博客晾一边了.现在,总算能写点东西了. 我与ACM-ICPC的结缘,是从大一开学1个多月后开 ...
- gcc对c++标准的支持
GCC 4.8.1完全支持c++11核心部分,对应的glibc为2.17 gcc 4.9支持c++11正则表达式,卧槽...4.8.5会报terminate called after throwing ...
- com.mchange.v2.c3p0.impl.NewPooledConnection@be1839d closed by a client的正确解答
关于c3p0在debug模式下控制台抛出的如下异常: java.lang.Exception: DEBUG -- CLOSE BY CLIENT STACK TRACE at com.mchange. ...
- 【题解】Luogu P1648 看守
原题传送门:P1648 看守 这题目让求得的是d维( d <=4 )空间中n个点( 2 <= N <= 1000000 )之间最大的哈曼顿距离 模拟,emm,能拿30分,不错 因为d ...
- linux下网卡bonding配置(转)
linux下网卡bonding配置 章节 bonding技术 centos7配置bonding centos6配置bonding 一.bonding技术 bonding(绑定)是一种linux系统 ...
- CEF 文件下载
转载:https://blog.csdn.net/liuyan20092009/article/details/53819473?locationNum=6&fps=1 转载:https:// ...
- Django创建超级用户出现错误
如果运行python manage.py createsuperuser出现一大堆错误代码 解决方案: 1.检查settings.py中的DATABASE配置确定正确性 2.执行python mana ...
- Manjaro kde 18.0安装与基本配置
目录 更换源镜像.更新系统 安装搜狗输入法 安装软件 系统配置 最后清理垃圾 首先用Rufus制作启动U盘安装,设置好时间和日期等 更换源镜像.更新系统 排列源(只选清华源mirrors.tuna.t ...
- sha0dow0socks
秋水的一键安装脚本 #!/usr/bin/env bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bi ...
- FJUT 倒水(倒水问题)题解
题意:开学了, fold拿着两个无刻度, 容量分别是5L和7L的量筒来问Anxdada, 说水是无限的, 并且可以无限次将杯子装满或者清空, 那怎么用这个两个量筒倒出恰好4L水了? 我说简单啊, 先装 ...