第一步:

在微信开放平台创建安卓应用,需要输入的包名和签名就不用再提吧,不知道的自行百度。 
应用创建完毕后会得到两个值: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集成第三方微信登录相关推荐

  1. 手把手教你Android集成第三方微信登录

    最近公司要求集成第三方的微信登录功能,以前没做过,现在做完梳理下思路. 1.首先要在微信开放平台注册你的APP.获取APP的id和APPSecret. 2.然后要集成微信的sdk jar包 3.创建一 ...

  2. android apk 微信登入_Android集成第三方微信登录

    public classWXEntryActivity extends Activity implements IWXAPIEventHandler {privateIWXAPI api;privat ...

  3. Android App实现第三方微信登录

    Android App实现第三方微信登录 Android App实现第三方微信登录 1.下载微信官方最新的sdk,集成到app中.如下图: 2.注册到微信 可以在app的某个Activity的onCr ...

  4. Android应用实现微信登录与分享

    Android应用实现微信登录与分享 1. 闲话(可直接无视 项目慢慢的推进,逐渐的做到了微信第三方登录的功能模块了.其实我想说Orz,我等这一天等了好久了,想做个微信验证登录都等了两个多星期咧(其实 ...

  5. Android接入第三方QQ登录

    Android接入第三方QQ登录 前言 开始接入 1. 添加依赖 2.AndroidManifest.xml配置 3.初始化SDK 4.创建实例 5.实现回调 6. 调用QQ登录接口 7.获取用户信息 ...

  6. iOS第三方微信登录时不走回调方法

    ios 开发中第三方微信登录时,使用真机测试,授权登录按钮点击后不走微信demo的 -(void)onResp:(BaseResp*)resp 回调方法不走,无法判断是否成功 查看网上一些解决方法,自 ...

  7. 解决Android接入第三方QQ登录闪退

    解决Android接入第三方QQ登录闪退 1.问题 按照官方文档接入QQ登录后,模拟器上运行正常,在真机小米8(Android Q)上面的时候闪退: 报错如下: Java.lang.NoClassDe ...

  8. OC 技术 (需要UniversalLink)第三方微信(登录,分享,支付)详解(手动集成)(视频教学)

    一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹.靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希 ...

  9. Android应用调用微信登录接口

    很多App都是需要用户登录的,例如电商类的APP,用户登录后可以查看自己的购物订单,浏览痕迹等,登陆的话又可以分为多种登录,例如QQ,微信,微博,支付宝等,那么接下来这篇文章讲诉的是应用如何调用微信的 ...

最新文章

  1. “端午节” 送亲戚,送长辈,粽子可视化大屏来帮忙!
  2. C-#数据库方面好书
  3. python struct模块的使用
  4. python没有运行_Python没有执行__init__
  5. python中的集合set
  6. ruby设计模式之观察者模式2————更加一般化的观察者模式
  7. uint8_t范围_uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结,看完全明白了...
  8. 加载java ie停止工作_IE报错“Internet Explorer 已停止工作”的解决方法
  9. IP-MAC绑定到底有多重要?(白目的见解)
  10. SDWebImage 第三方框架的使用——网络图片的处理操作
  11. xshell 基本操作
  12. 计算机未来目标规划,计算机专业职业生涯规划范文
  13. 云祺与南非最大移动支付公司iVeri携手合作
  14. python3 模拟 ajax post请求
  15. js的for循环中return可以跳出循环,而使用forEach等不可以跳出循环
  16. 【交换篇】06. 升级固件 ❀ C3750-E ❀ CISCO 交换机
  17. pda正常签收扫描是什么意思
  18. eFilm Workstation dicom 4.3 vs radiant dicom
  19. 达人评测 华硕ROG幻16怎么样
  20. 啊这!你们有听说过“程序员鼓励师”这个职业嘛?是我 孤陋寡闻了?

热门文章

  1. 开源TinyXML 最简单的新手教程
  2. 计算任意两个圆的交点
  3. winform中32位转64位系统上打开
  4. Private strand flush not complete 说明
  5. AndroidStudio_排坑指南_随时更新---Android原生开发工作笔记231
  6. OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
  7. K8S_Google工作笔记0013---通过二进制方式_部署node节点_安装docker
  8. JAVA组件使用---UUID使用方法
  9. .WeightedRandomSampler(3)
  10. mxnet 训练--如何生成rec 数据 +自己在本机测试的结果