Android集成第三方微信登录
第一步:
在微信开放平台创建安卓应用,需要输入的包名和签名就不用再提吧,不知道的自行百度。
应用创建完毕后会得到两个值:AppID、AppSecret,用这两个值来请求微信。
然后去微信开放平台的资源中心 ,选择安卓资源包 ,如图:
注意:输入的包名和签名要和项目中的一致!
第二步:
将安卓资源包中的libammsdk.jar 导入到项目中的libs文件夹下面。
并在项目中的创建一个包 ,包名必须为 package+wxapi,比如你的包名是com.xxx.Android,那就要创建一个 com.xxx.android.wxapi。然后在这个 包下面 建一个类 ,类名为WXEntryActivity。
在AndroidManifest.xml 注册这个类
<activityandroid:name="com.xxx.android.wxapi.WXEntryActivity"android:configChanges="keyboardHidden|orientation|screenSize"android:exported="true"android:launchMode="singleTop"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar" ></activity>
下面是WXEntryActivity中的代码:
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {private IWXAPI api;private BaseResp resp = null;private String WX_APP_ID = "创建应用后得到的APP_ID";// 获取第一步的code后,请求以下链接获取access_tokenprivate String GetCodeRequest = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";// 获取用户个人信息private String GetUserInfo = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID";private String WX_APP_SECRET = "创建应用后得到的APP_SECRET";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);api = WXAPIFactory.createWXAPI(this, WX_APP_ID, false);api.handleIntent(getIntent(), this);}// 微信发送请求到第三方应用时,会回调到该方法 @Overridepublic void onReq(BaseReq req) {finish();}// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法 @Overridepublic void onResp(BaseResp resp) {String result = "";if (resp != null) {resp = resp;}switch (resp.errCode) {case BaseResp.ErrCode.ERR_OK:result = "发送成功";Toast.makeText(this, result, Toast.LENGTH_LONG).show();String code = ((SendAuth.Resp) resp).code;/** 将你前面得到的AppID、AppSecret、code,拼接成URL 获取access_token等等的信息(微信)*/String get_access_token = getCodeRequest(code);AsyncHttpClient client = new AsyncHttpClient();client.post(get_access_token, new JsonHttpResponseHandler() {@Overridepublic void onSuccess(int statusCode, JSONObject response) {// TODO Auto-generated method stub super.onSuccess(statusCode, response);try {if (!response.equals("")) {String access_token = response.getString("access_token");String openid = response.getString("openid");String get_user_info_url = getUserInfo(access_token, openid);getUserInfo(get_user_info_url);}} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace();}}});finish();break;case BaseResp.ErrCode.ERR_USER_CANCEL:result = "发送取消";Toast.makeText(this, result, Toast.LENGTH_LONG).show();finish();break;case BaseResp.ErrCode.ERR_AUTH_DENIED:result = "发送被拒绝";Toast.makeText(this, result, Toast.LENGTH_LONG).show();finish();break;default:result = "发送返回";Toast.makeText(this, result, Toast.LENGTH_LONG).show();finish();break;}}/*** 通过拼接的用户信息url获取用户信息* * @param user_info_url*/private void getUserInfo(String user_info_url) {AsyncHttpClient client = new AsyncHttpClient();client.get(user_info_url, new JsonHttpResponseHandler() {@Overridepublic void onSuccess(int statusCode, JSONObject response) {// TODO Auto-generated method stub super.onSuccess(statusCode, response);try {System.out.println("获取用户信息:" + response);if (!response.equals("")) {String openid = response.getString("openid");String nickname = response.getString("nickname");String headimgurl = response.getString("headimgurl");}} catch (Exception e) {// TODO Auto-generated catch block e.printStackTrace();}}});}@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);setIntent(intent);api.handleIntent(intent, this);finish();}/*** 获取access_token的URL(微信)* * @param code* 授权时,微信回调给的* @return URL*/private String getCodeRequest(String code) {String result = null;GetCodeRequest = GetCodeRequest.replace("APPID",urlEnodeUTF8(WX_APP_ID));GetCodeRequest = GetCodeRequest.replace("SECRET",urlEnodeUTF8(WX_APP_SECRET));GetCodeRequest = GetCodeRequest.replace("CODE", urlEnodeUTF8(code));result = GetCodeRequest;return result;}/*** 获取用户个人信息的URL(微信)* * @param access_token* 获取access_token时给的* @param openid* 获取access_token时给的* @return URL*/private String getUserInfo(String access_token, String openid) {String result = null;GetUserInfo = GetUserInfo.replace("ACCESS_TOKEN",urlEnodeUTF8(access_token));GetUserInfo = GetUserInfo.replace("OPENID", urlEnodeUTF8(openid));result = GetUserInfo;return result;}private String urlEnodeUTF8(String str) {String result = str;try {result = URLEncoder.encode(str, "UTF-8");} catch (Exception e) {e.printStackTrace();}return result;}}
第三步:
在Activity中调起访问微信
public class LoginActivity extends Activity implements OnClickListener {private Button login;// 微信登录private static IWXAPI WXapi;private String WX_APP_ID = "创建应用后得到的APP_ID";@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stub// 启动activity时不自动弹出软键盘 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.login);init();}private void init() {login = (Button) findViewById(R.id.bt_login);login.setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.login:WXLogin();break;default:break;}}/*** 登录微信*/private void WXLogin() {WXapi = WXAPIFactory.createWXAPI(this, WX_APP_ID, true);WXapi.registerApp(WX_APP_ID);SendAuth.Req req = new SendAuth.Req();req.scope = "snsapi_userinfo";req.state = "wechat_sdk_demo";WXapi.sendReq(req);}}
Android集成第三方微信登录相关推荐
- 手把手教你Android集成第三方微信登录
最近公司要求集成第三方的微信登录功能,以前没做过,现在做完梳理下思路. 1.首先要在微信开放平台注册你的APP.获取APP的id和APPSecret. 2.然后要集成微信的sdk jar包 3.创建一 ...
- android apk 微信登入_Android集成第三方微信登录
public classWXEntryActivity extends Activity implements IWXAPIEventHandler {privateIWXAPI api;privat ...
- Android App实现第三方微信登录
Android App实现第三方微信登录 Android App实现第三方微信登录 1.下载微信官方最新的sdk,集成到app中.如下图: 2.注册到微信 可以在app的某个Activity的onCr ...
- Android应用实现微信登录与分享
Android应用实现微信登录与分享 1. 闲话(可直接无视 项目慢慢的推进,逐渐的做到了微信第三方登录的功能模块了.其实我想说Orz,我等这一天等了好久了,想做个微信验证登录都等了两个多星期咧(其实 ...
- Android接入第三方QQ登录
Android接入第三方QQ登录 前言 开始接入 1. 添加依赖 2.AndroidManifest.xml配置 3.初始化SDK 4.创建实例 5.实现回调 6. 调用QQ登录接口 7.获取用户信息 ...
- iOS第三方微信登录时不走回调方法
ios 开发中第三方微信登录时,使用真机测试,授权登录按钮点击后不走微信demo的 -(void)onResp:(BaseResp*)resp 回调方法不走,无法判断是否成功 查看网上一些解决方法,自 ...
- 解决Android接入第三方QQ登录闪退
解决Android接入第三方QQ登录闪退 1.问题 按照官方文档接入QQ登录后,模拟器上运行正常,在真机小米8(Android Q)上面的时候闪退: 报错如下: Java.lang.NoClassDe ...
- OC 技术 (需要UniversalLink)第三方微信(登录,分享,支付)详解(手动集成)(视频教学)
一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹.靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希 ...
- Android应用调用微信登录接口
很多App都是需要用户登录的,例如电商类的APP,用户登录后可以查看自己的购物订单,浏览痕迹等,登陆的话又可以分为多种登录,例如QQ,微信,微博,支付宝等,那么接下来这篇文章讲诉的是应用如何调用微信的 ...
最新文章
- “端午节” 送亲戚,送长辈,粽子可视化大屏来帮忙!
- C-#数据库方面好书
- python struct模块的使用
- python没有运行_Python没有执行__init__
- python中的集合set
- ruby设计模式之观察者模式2————更加一般化的观察者模式
- uint8_t范围_uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结,看完全明白了...
- 加载java ie停止工作_IE报错“Internet Explorer 已停止工作”的解决方法
- IP-MAC绑定到底有多重要?(白目的见解)
- SDWebImage 第三方框架的使用——网络图片的处理操作
- xshell 基本操作
- 计算机未来目标规划,计算机专业职业生涯规划范文
- 云祺与南非最大移动支付公司iVeri携手合作
- python3 模拟 ajax post请求
- js的for循环中return可以跳出循环,而使用forEach等不可以跳出循环
- 【交换篇】06. 升级固件 ❀ C3750-E ❀ CISCO 交换机
- pda正常签收扫描是什么意思
- eFilm Workstation dicom 4.3 vs radiant dicom
- 达人评测 华硕ROG幻16怎么样
- 啊这!你们有听说过“程序员鼓励师”这个职业嘛?是我 孤陋寡闻了?
热门文章
- 开源TinyXML 最简单的新手教程
- 计算任意两个圆的交点
- winform中32位转64位系统上打开
- Private strand flush not complete 说明
- AndroidStudio_排坑指南_随时更新---Android原生开发工作笔记231
- OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
- K8S_Google工作笔记0013---通过二进制方式_部署node节点_安装docker
- JAVA组件使用---UUID使用方法
- .WeightedRandomSampler(3)
- mxnet 训练--如何生成rec 数据 +自己在本机测试的结果