java在微信的应用_android app微信登录(android端+Java后台)

本文详细介绍了如何在Android app中集成微信登录功能,包括在微信开放平台注册、获取AppID和AppSecret、配置应用签名、处理授权回调、后台获取用户信息等步骤。示例代码展示了Android端和Java后台的关键实现,确保用户能够安全地通过微信登录并获取用户详情。
摘要由CSDN通过智能技术生成

articleDetail.htm?resourceId=885

android app微信登录(android端+Java后台)

积分: 22

智慧币

积分: 2 智慧币

【0.67元 】

包含内容: 源码,全套工具

详情描述

如遇视频不清晰,请最大化观看演示

以下仅列出部分功能,全部功能请至官网 《手册》查看

播放

暂停

播放/暂停

静音

取消静音

清除视频(仅flashplayer)

获取元数据

添加元件

删除元件

添加弹幕

视频截图(需要视频权限)

播放器截图(需要视频权限)

暂停广告(仅flashplayer)

继续播放广告(仅flashplayer)

关闭(结束)广告(仅flashplayer)

显示控制栏

隐藏控制栏

默认角度

顺时针旋转

逆时针旋转

旋转90

旋转180

旋转270

旋转-90

旋转-180

旋转-270

默认大小

放大

缩小

默认速度(仅H5)

0.5倍(仅H5)

1倍(仅H5)

2倍(仅H5)

正常拖动

不能拖动

只能前进(向右拖动)

只能后退

能回到第一次拖动时的位置

看过的地方可以随意拖动

原始比例(仅flashplayer)

4:3(仅flashplayer)

16:9(仅flashplayer)

调整亮度(仅flashplayer)

恢复亮度(仅flashplayer)

调整对比度(仅flashplayer)

恢复对比度(仅flashplayer)

调整饱和度(仅flashplayer)

恢复饱和度(仅flashplayer)

调整色相(仅flashplayer)

恢复色相(仅flashplayer)

播放

播放

单独监听功能:

播放状态:

跳转状态:无

缓冲:100

当前音量:0.8

是否全屏:否

控制栏:显示

还未结束

当前播放时间(秒):0

前置广告状态:

鼠标位置

切换清晰度:

点击监听:

监听截图功能

Custom Tab

WeChat-Login(app).rar

智慧币/个2

本实例项目运行条件:

1. 到微信开放平台注册帐号并且创建移动应用

2bb2e3964f352f80c8d158ebb45a1d37.png

2. 获得移动应用的权限【微信登录】

7590efbaed53352f0c9537577016502d.png

3. 配置应用签名, 这个签名通过 android打包文件jks生成或者keystore生成

签名文件生成方法:

3.1  keytool-list -v -keystore jks文件(或者keystore文件)

3.2 获取指纹证书md5值, 将md5中的冒号去掉, 大写换成小写   (详情)

总结: 微信开放平台Android应用签名的本质便是我们签名文件jks(或者keystore)的MD5值

019b0ee1d93a8624bcc6bcf637f636ac.png

4. 应用程序开发完成后,debug模式是无法自动登录的,应用程序必须由相应的jks签名之后生成的apk包才能进行分享(微信会校验应用签名)

2. 流程讲解

1.1 打开app(第一张图),点击【微信登录】,打开微信登录授权页面(第二张图),点击【确认登录】,授权成功后,获得登录人的详细信息(如: openid(微信帐号对应相应应用的唯一标志字符串), 昵称, 头像)

5927bd7a239d8ccaea3de602e0da291c.png

8fc9c121f4d5b8cbe1ea93084d0150a8.png        

853b7b4c0c45e2934242cdf58fc3d650.png

3. 代码详解

3.1 Android端

3.1.1 引入微信相应的jar包

2f4e1ac9405d1997e8b574642d0b9d79.png

3.1.2 在应用程序包名对应的路径下,新建包 wxapi, 添加新类 WXEntryActivity, 注意这里的包名与类名必须唯一

d05eccf3b1b891dd25f1318dc4106faa.png

WXEntryActivity代码:public class WXEntryActivity extends BaseActivity implements IWXAPIEventHandler {

private static final String TAG = "WXEntryActivity";

private static final int RETURN_MSG_TYPE_LOGIN = 1;

private static final int RETURN_MSG_TYPE_SHARE = 2;

UserServiceImpl userService;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

userService = new UserServiceImpl();

Constant.wxApi.handleIntent(getIntent(), this);

}

@Override

protected void onNewIntent(Intent intent) {

super.onNewIntent(intent);

setIntent(intent);

Constant.wxApi.handleIntent(intent, this);

}

@Override

public void onReq(BaseReq req) {

}

/**

* 得到支付结果回调

*/

@Override

public void onResp(BaseResp resp) {

switch (resp.errCode) {

case BaseResp.ErrCode.ERR_AUTH_DENIED:

case BaseResp.ErrCode.ERR_USER_CANCEL:

if (RETURN_MSG_TYPE_SHARE == resp.getType()) {

showToast("分享失败");

} else if(RETURN_MSG_TYPE_LOGIN == resp.getType()) {

showToast("微信自动登录失败");

}

finish();

break;

case BaseResp.ErrCode.ERR_OK:

switch (resp.getType()) {

case RETURN_MSG_TYPE_LOGIN:

//拿到了微信返回的code,立马再去请求access_token

String code = ((SendAuth.Resp) resp).code;

//使用微信进行第三方登录

userService

.wxlogin(code)

.subscribe(new Action1() {

@Override

public void call(User user) {

showToast(user.getOpenid());

Constant.user = user;

finish();

}

}, new Action1() {

@Override

public void call(Throwable throwable) {

Toast.makeText(WXEntryActivity.this, throwable.getMessage(), Toast.LENGTH_SHORT).show();

finish();

}

});

break;

case RETURN_MSG_TYPE_SHARE:

showToast("微信分享成功");

finish();

break;

}

break;

}

}

}

3.1.3 点击登录按钮事件代码

判断微信客户端是否安装, 如果未安装则给个提示, 如果已经安装, 拉起微信授权页面,获得相应的code, 根据code去后台获得用户相应的信息(用户信息中不含有微信号)@OnClick(R.id.login)

public void login(){

if (!Constant.wxApi.isWXAppInstalled()) {

showToast("您还未安装微信客户端");

return;

}

final SendAuth.Req req = new SendAuth.Req();

req.scope = "snsapi_userinfo";

req.state = "diandi_wx_login";

Constant.wxApi.sendReq(req);

//finish();

}

3.2 JAVA后台代码

3.2.1 由于后台需要调用微信提供的接口函数获取用户信息, 故需要引入相应的jar包

com.github.liyiorg

weixin-popular

2.8.5

3.2.2 配置微信应用对应的 AppID, AppSecret, 注意这里的配置千万不能出错

获取用户信息的操作也可以放在android端,但为了AppID, AppSecret不被盗取,强烈建议放在后台

87598d633a0d3f1414b45e4cf55d9f6b.png

3.2.3 根据前台传递的 code 与 后台的 APPID, AppSecret 获取用户信息,传递给android端用于显示@Controller

@RequestMapping("/wx")

public class WxController {

public WxController() {

System.out.println("WxController构造函数");

}

//访问此资源的url:  http://localhost:8080/AutoLogin/wx/wxLogin.htm

@RequestMapping(value = "/wxLogin.htm", produces = MediaType.APPLICATION_JSON_VALUE)

@ResponseBody

public Result wxreg(HttpServletRequest request, String code){

Result result = new Result();

String strAppId = ConfigManager.getInstance().getConfigItem("WXAppID");

String strAppSecret = ConfigManager.getInstance().getConfigItem("WXAppSecret");

SnsToken token = SnsAPI.oauth2AccessToken(strAppId, strAppSecret, code);

BaseResult baseResult = SnsAPI.auth(token.getAccess_token(), token.getOpenid());

if("0".equals(baseResult.getErrcode()) && "ok".equals(baseResult.getErrmsg())){

User user = SnsAPI.userinfo(token.getAccess_token(), token.getOpenid(), "zh-CN");

System.out.println("user: " + user.toString());

result.setStateCode("0");

result.setDesc("成功获得信信登录用户");

result.setData(user);

}else{

result.setStateCode("-1");

result.setDesc("成功获得信信登录用户");

}

return result;

}

//测试函数

public static void main(String[] args)

{

// TODO Auto-generated method stub

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值