欢迎您光临深圳塔灯网络科技有限公司!
电话图标 余先生:13699882642

网站百科

为您解码网站建设的点点滴滴

学习笔记-微信授权登录

发表日期:2019-08 文章编辑:小灯 浏览次数:1397

saviour946

 compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

private boolean isWeixinAvilible(LoginActivity loginActivity) {
final PackageManager packageManager = loginActivity.getPackageManager();
//获取packagemanager
List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
// 获取所有已安装程序的包信息
if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = pinfo.get(i).packageName;
if (pn.equals("com.tencent.mm")) {
return true;
}
}
}
return false;
}

IWXAPI api = WXAPIFactory.createWXAPI(this, Constant.APP_ID, false);
private static final String WEIXIN_SCOPE = "snsapi_userinfo";// 用于请求用户信息的作用域
private static final String WEIXIN_STATE = "login_state"; // 自定义
SendAuth.Req req = new SendAuth.Req();
req.scope = WEIXIN_SCOPE;//授权阈 
req.state = WEIXIN_STATE;
api.registerApp(Constant.APP_ID);
api.sendReq(req);


android:exported="true"
WXEntryActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import com.tencent.mm.opensdk.constants.ConstantsAPI;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.modelmsg.SendAuth;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;

//微信界面
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
public static final String WX_APPID = "-------------";
private IWXAPI api;
private boolean isFrist = true;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wxentry);
//注意:*/
//第三方开发者如果使用透明界面来实现WXEntryActivity,需要判断handleIntent的返回值,如果返回值为false,则说明入参不合法未被SDK处理,应finish当前透明界面,避免外部通过传递非法参数的Intent导致停留在透明界面,引起用户的疑惑
try {
api = WXAPIFactory.createWXAPI(this, WX_APPID, false);
api.handleIntent(getIntent(), this);//这一句必须加,不加收不到返回的数据
} catch (Exception e) {
e.printStackTrace();
}
}

private static final String WEIXIN_SCOPE = "snsapi_userinfo";// 用于请求用户信息的作用域
private static final String WEIXIN_STATE = "login_state"; // 自定义
private SendAuth.Req req;

// 微信发送请求到第三方应用时,会回调到该方法
@Override
public void onReq(BaseReq req) {
switch (req.getType()) {
case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:
break;
case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:
break;
default:
break;
}
}

// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
@Override
public void onResp(BaseResp resp) {
 if (ConstantsAPI.COMMAND_SENDAUTH == resp.getType()) {
//授权回调
switch (resp.errCode) {
case BaseResp.ErrCode.ERR_OK:
//获取请求码
SendAuth.Resp sendAuthResp = (SendAuth.Resp) resp;
String code = sendAuthResp.code;
Log.d("tian", "请求码--------" + code);
WXEntryActivity.this.finish();
finish();
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
/*Intent intent1 = new Intent();
Log.e("tiantian","微信登陆取消设置result");
intent1.putExtra("code", "cancel");
setResult(2, intent1);*/
finish();
break;
case BaseResp.ErrCode.ERR_AUTH_DENIED:
finish();
break;
case BaseResp.ErrCode.ERR_UNSUPPORT:
finish();
break;
default:
break;
}
}

}

@Override
public void onBackPressed() {
finish();
}

 @Override
protected void onResume() {
super.onResume();

}
}

private void getResult(final String code) {
HttpService httpService = CommonUtils.doNet();
Call<WxTokenBean> call = httpService.getWxToken("https://api.weixin.qq.com/sns/oauth2/access_token", Constant.APP_ID, Constant.APP_SECRET, code, "authorization_code");
call.enqueue(new retrofit2.Callback<WxTokenBean>() {
@Override
public void onResponse(Call<WxTokenBean> call, retrofit2.Response<WxTokenBean> response) {
if (!response.isSuccessful()) {
ToastUtils.showToast(response.message());
return;
}
WxTokenBean wxTokenBean = response.body();
String access_token = wxTokenBean.getAccess_token();
String openid = wxTokenBean.getOpenid();
getUserinfo(access_token, openid);
}

@Override
public void onFailure(Call<WxTokenBean> call, Throwable t) {
dismissLoadingDialog();
ToastUtils.showToast("微信登陆失败,请重试");
}
});
}

Call<WxUserInfoBean> call = httpService.getWxUserInfo("https://api.weixin.qq.com/sns/userinfo?access_token", access_token, openid);


本页内容由塔灯网络科技有限公司通过网络收集编辑所得,所有资料仅供用户学习参考,本站不拥有所有权,如您认为本网页中由涉嫌抄袭的内容,请及时与我们联系,并提供相关证据,工作人员会在5工作日内联系您,一经查实,本站立刻删除侵权内容。本文链接:http://www.dengtar.com/20680.html

相关企业建站知识
 八年  行业经验

多一份参考,总有益处

联系深圳网站公司塔灯网络,免费获得网站建设方案及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:余经理:13699882642

Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.