android微信第三方登录2

利用http与微信通信换取用户信息和openid
使用了okhttp作为http通信的框架


1.首先实例化okhttp连接
private final OkHttpClient client = new OkHttpClient();

获得code
case BaseResp.ErrCode.ERR_OK:
//      可用以下两种方法获得code
//      resp.toBundle(bundle);
//      Resp sp = new Resp(bundle);
//      String code = sp.code;
//      或者
String code = ((SendAuth.Resp) baseResp).code;
String state = ((SendAuth.Resp) baseResp).state;
Toast.makeText(getApplicationContext(), "恭喜这是你的code" + code, Toast.LENGTH_LONG).show();
Log.e(TAG, "onResp: " + code);
try {
    getAccess_token(code);
} catch (Exception e) {
    e.printStackTrace();
}
//上面的code就是接入指南里要拿到的code
break;

根据code获取用户信息
private void getAccess_token(String code) throws Exception {
    String url = "https://api.weixin.qq.com/sns/oauth2/access_token?" +
            "appid=" + ConfigUtil.Wechat_Appid +
            "&secret=" + ConfigUtil.Wechat_AppSecret +
            "&code=" + code +
            "&grant_type=authorization_code";
    run(url);
}

引入okhttp包

引入okhttp的包
//通过http与微信通信
public void run(String url) throws Exception {
final Request request = new Request.Builder()
        //.url("http://publicobject.com/helloworld.txt")
        .url(url)
        .get()
        .build();

client.newCall(request).enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
        e.printStackTrace();
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
        try {
            String responseStr=response.body().string();
            JSONObject jsonObject = new JSONObject(responseStr);
            System.out.println(TAG + jsonObject.getString("access_token"));//在回调中获取access_token
        } catch (JSONException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }


    }
});
}
注意:

如果微信调不起来
1.仔细检查签名
如果修改过签名
1.可以重新安装下微信

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值