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. 到微信开放平台注册帐号并且创建移动应用
2. 获得移动应用的权限【微信登录】
3. 配置应用签名, 这个签名通过 android打包文件jks生成或者keystore生成
签名文件生成方法:
3.1 keytool-list -v -keystore jks文件(或者keystore文件)
3.2 获取指纹证书md5值, 将md5中的冒号去掉, 大写换成小写 (详情)
总结: 微信开放平台Android应用签名的本质便是我们签名文件jks(或者keystore)的MD5值
4. 应用程序开发完成后,debug模式是无法自动登录的,应用程序必须由相应的jks签名之后生成的apk包才能进行分享(微信会校验应用签名)
2. 流程讲解
1.1 打开app(第一张图),点击【微信登录】,打开微信登录授权页面(第二张图),点击【确认登录】,授权成功后,获得登录人的详细信息(如: openid(微信帐号对应相应应用的唯一标志字符串), 昵称, 头像)
3. 代码详解
3.1 Android端
3.1.1 引入微信相应的jar包
3.1.2 在应用程序包名对应的路径下,新建包 wxapi, 添加新类 WXEntryActivity, 注意这里的包名与类名必须唯一
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不被盗取,强烈建议放在后台
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
}
}