android 微信第三方登录
来源:互联网 发布:用户画像建模算法 编辑:程序博客网 时间:2024/05/17 01:11
用微信直接登录APP:
首先在build.gradle中的dependencie中添加
compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:1.0.2'
在全局的application文件中的onCreate中添加registToWX():
import com.tencent.mm.opensdk.openapi.IWXAPI;import com.tencent.mm.opensdk.openapi.WXAPIFactory;
public static IWXAPI mWxApi; private void registToWX() { //AppConst.WEIXIN.APP_ID是指你应用在微信开放平台上的AppID,记得替换。 mWxApi = WXAPIFactory.createWXAPI(this, "*********", false); // 将该app注册到微信 mWxApi.registerApp("***********"); }
在调用页面的点击事件中加入:
case R.id.iv_wxLogin: wxLogin(); break;
public void wxLogin() { if (!HaierApp.mWxApi.isWXAppInstalled()) { Toast.makeText(this,"您还未安装微信客户端",Toast.LENGTH_SHORT).show(); return; } final SendAuth.Req req = new SendAuth.Req(); req.scope = "snsapi_userinfo"; req.state = "diandi_wx_login"; HaierApp.mWxApi.sendReq(req);}
然后在包名.wxapi文件夹下增加WXEntryActivity文件:
package com.haier.uhome.appliance.wxapi;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.View;import android.widget.Toast;import com.android.volley.VolleyError;import com.google.gson.Gson;import com.haier.uhome.appliance.newVersion.contant.HttpConstant;import com.haier.uhome.appliance.newVersion.contant.ServiceAddr;import com.haier.uhome.appliance.newVersion.module.login.LoginMainActivity;import com.haier.uhome.appliance.newVersion.module.winxin.bean.WXBindBean;import com.haier.uhome.appliance.newVersion.module.winxin.bean.WXOpenId;import com.haier.uhome.appliance.newVersion.module.winxin.bean.WXUserId;import com.haier.uhome.appliance.newVersion.result.HomeResult;import com.haier.uhome.application.HaierApp;import com.haier.uhome.common.dialog.DialogHelper;import com.haier.uhome.common.util.LogUtil;import com.haier.uhome.constant.UserLoginConstant;import com.haier.uhome.db.operateDao.MessageDao;import com.haier.uhome.domain.bbs.HttpMessageUtil;import com.haier.uhome.helper.InitHeader;import com.haier.uhome.volley.IResponseListener;import com.haier.uhome.volley.VolleyIMPL;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.IWXAPIEventHandler;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import java.util.Map;public class WXEntryActivity extends Activity implements IWXAPIEventHandler{private static final String TAG = "WXEntryActivity"; WXInfoPresenter presenter; private String appid = "**********"; private String appSecret = "*************"; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); HaierApp.mWxApi.handleIntent(getIntent(),this); presenter = new WXInfoPresenter(); presenter.attachView(this); } // 微信发送请求到第三方应用时,会回调到该方法 @Override public void onReq(BaseReq baseReq) { } // 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法 @Override public void onResp(BaseResp baseResp) { Log.e(TAG,"baseResp.errCode"); switch (baseResp.errCode){ case BaseResp.ErrCode.ERR_OK: String code = ((SendAuth.Resp) baseResp).code; Log.e(TAG,"code = "+ code);// presenter.getOpenId(HttpConstant.PERSON_BASE,code); getOpenId(code); break; case BaseResp.ErrCode.ERR_USER_CANCEL: Log.e(TAG,"code =ERR_USER_CANCEL "); break; } this.finish(); } @Override public void onFailure(Throwable e) { } //获取微信openId private void getOpenId(String code) { JSONObject jsonObject = new JSONObject(); JSONArray jsonArray = new JSONArray(); try { jsonObject.put("code", code); } catch (JSONException e1) { e1.printStackTrace(); } Map<String, String> headers = InitHeader.getHeader(false); String url = ""; url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid +"&secret="+appSecret+"&code="+code+"&grant_type=authorization_code"; Log.e(TAG,"url="+url);// } VolleyIMPL.getNoHeaderResponse(url,headers, new IResponseListener() { @Override public void onResponse(JSONObject json) { try { Log.e(TAG,"json="+json); JSONObject object = new JSONObject(json.toString()); if(json.getString("openid") != null && !json.getString("openid").equals("")){ Gson gson = new Gson(); WXOpenId wxOpenId = gson.fromJson(json.toString(),WXOpenId.class); getWXuserByOpenId(wxOpenId.getOpenid(),wxOpenId.getAccess_token()); }else{ Toast.makeText(WXEntryActivity.this,"获取openId失败",Toast.LENGTH_SHORT).show(); } } catch (Exception e) { e.printStackTrace();// mhandler.sendEmptyMessage(LOOK_CODE_ERROR); } } @Override public void onErrorResponse(VolleyError error) {// mhandler.sendEmptyMessage(LOOK_CODE_ERROR); } }, null); } //通过openId获取微信用户信息 private void getWXuserByOpenId(String openId,String access_token) { JSONObject jsonObject = new JSONObject(); JSONArray jsonArray = new JSONArray(); try { jsonObject.put("code", openId); } catch (JSONException e1) { e1.printStackTrace(); } Map<String, String> headers = InitHeader.getHeader(false); String url = ""; url = "https://api.weixin.qq.com/sns/userinfo?access_token="+access_token+"&openid="+openId; Log.e(TAG,"url="+url);// } VolleyIMPL.getNoHeaderResponse(url,headers, new IResponseListener() { @Override public void onResponse(JSONObject json) { try { Log.e(TAG,"json="+json); if(json.getString("openid") != null){ Gson gson = new Gson(); WXUserId wxUserId = gson.fromJson(json.toString(),WXUserId.class); Intent intent = new Intent(WXEntryActivity.this, LoginMainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP ); intent.putExtra("wx","wx"); intent.putExtra("wxUser",wxUserId); startActivity(intent); }else{ Toast.makeText(WXEntryActivity.this,"获取微信用户信息失败",Toast.LENGTH_SHORT).show(); } } catch (Exception e) { e.printStackTrace();// mhandler.sendEmptyMessage(LOOK_CODE_ERROR); } } @Override public void onErrorResponse(VolleyError error) {// mhandler.sendEmptyMessage(LOOK_CODE_ERROR); } }, null); } @Override public void wxBindPhoneSuccess(HomeResult<WXBindBean> result) { }// private IWXAPI api;}
阅读全文
1 0
- Android第三方登录--微信登录
- Android微信第三方登录接入
- Android 微信第三方App登录
- 微信第三方登录Android实现
- 微信第三方登录Android注意事项
- Android之微信第三方登录
- android 微信第三方登录
- Android微信第三方登录
- android微信第三方登录
- android微信第三方登录2
- Android 微信第三方登录
- android 微信第三方登录
- android第三方登录之微信登录详情
- Android第三方登录-----微信登录接入方法
- android 友盟第三方登录之微信登录
- Android开发第三方登录--微信登录
- 微信第三方登录
- 微信第三方登录
- spring 配置thymeleaf
- 000045:在嵌套的循环中使用break跳出内层循环
- 冒泡排序
- 如何在阿里云服务器部署Redis第一篇--redis的安装
- 你同学都身价上亿了,你还在纠结早晨几点能起床
- android 微信第三方登录
- cpp——类——内存布局
- TensorFlow学习之路(1): correct = tf.nn.in_top_k(logits, labels, k)
- HTML:DOM操作
- 自定义实现瀑布流布局
- Kotlin语法(九)
- iFunk翼超极本苏宁易购正式开售啦
- Windows下使用BeautifulSoup 出现You are trying to run the Python 2 version of Beautiful Soup under Python
- 【JMeter】JMeter使用plugins插件进行服务器性能监控