实现Android移动端的登录

第一步,当然是去微信开放平台去申请到一个APP_ID和APP_SECRET,这一步和其他的第三方是一样的,不多说。

第二步,下载微信提供的SDK,将lib包下的jar文件libammsdk.jar拷到自己的lib底下。

第三步,在自己项目的activity实现微信授权登录的方法下,将项目注册到微信

api = WXAPIFactory.createWXAPI(this,Constants.WX_LOGIN_APP_ID,true);
api.registerApp(Constants.WX_LOGIN_APP_ID);

SendAuth.Req req = new SendAuth.Req();  
req.scope = "snsapi_userinfo";  
req.state = "wechat_sdk_demo_test";  
api.sendReq(req); 

第四步,在自己项目包目录下建一个子包wxapi,在其下面创建一个类WXEntryActivity,实现与微信服务器端的交互(我这里是用XUtils的HttpUtils方法实现的服务器数据访问)

public class WXEntryActivity extends Activity implements IWXAPIEventHandler{
    private HttpUtils hUtils = new HttpUtils();
    private IWXAPI api;
    private String code;
    private String access_token;
    private String openid;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    	api = WXAPIFactory.createWXAPI(this,Constants.WX_LOGIN_APP_ID, false);
    	api.registerApp(Constants.WX_LOGIN_APP_ID);
        api.handleIntent(getIntent(), this);
    }

    @Override
    protected void onNewIntent(Intent intent) {
	super.onNewIntent(intent);
	setIntent(intent);
        api.handleIntent(intent, this);
    }

    @Override
    public void onResp(BaseResp resp) {
	Log.i("info", "--onResp--");
	switch (resp.errCode) {
	case BaseResp.ErrCode.ERR_OK:
		code = ((SendAuth.Resp) resp).code;
			
		String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + Constants.WX_LOGIN_APP_ID
				+"&secret=" + Constants.WX_LOGIN_APP_SECRET
				+"&code="+ code 
				+"&grant_type=authorization_code";
		hUtils.send(HttpMethod.GET, url, new RequestCallBack<String>() {

			@Override
			public void onFailure(HttpException arg0, String arg1) {
					
			}

			@Override
			public void onSuccess(ResponseInfo<String> responseInfo) {
				String result = responseInfo.result;
				try {
					JSONObject obj = new JSONObject(result);
					access_token = obj.optString("access_token");
//					Log.i("info", "--access_token--"+access_token);
					openid = obj.optString("openid");
//					Log.i("info", "--openid--"+openid);
						
					String getInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token="+access_token
							+"&openid="+openid;
					hUtils.send(HttpMethod.GET, getInfoUrl, new RequestCallBack<String>() {

						@Override
						public void onFailure(HttpException arg0, String arg1) {
						}

						@Override
						public void onSuccess(ResponseInfo<String> responseInfo) {
							String result = responseInfo.result;
							RequestParams params = new RequestParams();//向服务器提交的数据
							String requestUrl = null;//服务器返回数据接口
							hUtils.send(HttpMethod.POST,requestUrl,params,new RequestCallBack<String>() {

								@Override
								public void onFailure(HttpException arg0,
											String arg1) {
								}

								@Override
								public void onSuccess(
									ResponseInfo<String> responseInfo) {
									String result = responseInfo.result;
									//在返回结果中获取用户的相关信息保存到共享参数中
									//处理完成后,根据判断,跳转至相应页面
								}
							});
						}
					});
				} catch (JSONException e) {
					e.printStackTrace();
				}
			}
		});
			
		break;
	}
}
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值