第一步
需要到官网上注册、认证 微信开放平台:https://open.weixin.qq.com 网站
代码:
下面红框中的这些代码就可以调起微信了。然后授权成功后,微信会返回一个code
1,要在你在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity.java文件,输入类似下
2,WXEntryActivity.java类的代码如下:这个类中介绍如何接收微信回传的code信息。
public class WXEntryActivity extends Activity implements IWXAPIEventHandler { private static final String TAG = "WXEntryActivity"; private IWXAPI api; OkHttpClient okHttpClient; String adresseMAC; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); api = WXAPIFactory.createWXAPI(this, WEIXIN_APP_ID, true); api.handleIntent(getIntent(), this); adresseMAC = StringUtils.getAdresseMAC(this); } @Override public void onReq(BaseReq baseReq) { } @Override public void onResp(BaseResp resp) { if (resp instanceof SendAuth.Resp) { String code = ((SendAuth.Resp) resp).code; if (code == null) { code = getIntent().getStringExtra("_wxapi_sendauth_resp_token"); } Log.i(TAG, "-----------codeaaaaa------>" + code); switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK: //发送成功 //拿到了微信返回的code,立马再去请求access_token getAccess_token(code); break; case BaseResp.ErrCode.ERR_USER_CANCEL: //发送取消 Log.i(TAG, "-----------code----CANCEL-->"); break; case BaseResp.ErrCode.ERR_AUTH_DENIED: //发送被拒绝 Log.i(TAG, "-----------code----DENIED-->"); break; } } } /** * 获取openid accessToken值用于后期操作 * * @param code 请求码 */ private void getAccess_token(final String code) { new Thread(new Runnable() { @Override public void run() { //get的方式提交就是url拼接的方式 String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxac99b8441a38c8b5&secret=72e1e271e54fc3e58e2fe5af722f96da&code=" + code + "&grant_type=authorization_code"; try { URL httpUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();//与服务器建立连接; conn.setReadTimeout(5000); conn.setRequestMethod("GET");//设置请求方式为GET final StringBuffer sb = new StringBuffer();//把获取的数据不断存放到StringBuffer中; BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));//使用reader向输入流中读取数据,并不断存放到StringBuffer中; String line; while ((line = reader.readLine()) != null) {//只要还没有读取完,就不断读取; sb.append(line);//在StringBuffer中添加; } String toString = sb.toString(); Log.i(TAG, "----token--->:" + toString); JSONObject jsonObject = new JSONObject(toString); String openid = jsonObject.getString("openid").toString().trim(); String access_token = jsonObject.getString("access_token").toString().trim(); getUserMesg(access_token, openid); } catch (ProtocolException e1) { e1.printStackTrace(); } catch (MalformedURLException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } } }).start(); }
/** * 获取微信的个人信息 * * @param access_token * @param openid */ private void getUserMesg(final String access_token, final String openid) { final String url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openid; new Thread(new Runnable() { @Override public void run() { try { URL httpUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();//与服务器建立连接; conn.setReadTimeout(5000); conn.setRequestMethod("GET");//设置请求方式为GET final StringBuffer sb = new StringBuffer();//把获取的数据不断存放到StringBuffer中; BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));//使用reader向输入流中读取数据,并不断存放到StringBuffer中; String line; while ((line = reader.readLine()) != null) {//只要还没有读取完,就不断读取; sb.append(line);//在StringBuffer中添加; } String toString = sb.toString();
Log.i(TAG, "----返回的个人信息的json--->:" + toString);JSONObject jsonObject = new JSONObject(toString); String openid = jsonObject.getString("openid").toString().trim(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (ProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } } }).start();}
第三步:
最后在在AndroidManifest.xml中加入下面的代码:
备注: 微信登录,支付等一些其他的功能需要付费开通使用,官网自己创建成功的应用下,如下图: