标签:
目前第三方登陆app需求很多了。在这里做一下微信app的登陆。直说其中几个功能点。
https://open.weixin.qq.com,首先去微信官网去注册app,然后下载demo。获取libammsdk.jar.
在进行第三方登陆的页面进行如下的初始化:
// Constants.APP_ID 是在官网注册app时,官网分配的appid api = WXAPIFactory.createWXAPI(this, Constants.APP_ID, true); api.registerApp(Constants.APP_ID);
其中api类型为IWXAPI。
然后在点击微信登陆之处做如下操作。
@OnClick({ R.id.weixinlogin })
public void weixinLogin(View view) {
//login(SHARE_MEDIA.WEIXIN);
SendAuth.Req req = new SendAuth.Req();
//授权读取用户信息
req.scope = "snsapi_userinfo";
//自定义信息
req.state = "wechat_sdk_demo_test";
//向微信发送请求
api.sendReq(req);
}
这是向微信发出请求,然后在你的项目的pkg name的目录下,建立一个wxapi的文件夹,里面建立一个WXEntryActivity.java的文件。他必须实现IWXAPIEventHandler这个接口,这个页面的路径一定要保证正确,微信会把请求返回结果,返回到这个界面。
public void onResp(BaseResp resp) {
int result = 0;
switch (resp.errCode) {
case BaseResp.ErrCode.ERR_OK:
result = R.string.errcode_success;
String code = ((SendAuth.Resp) resp).code;
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="
+ Constants.APP_ID
+ "&secret="
+ Constants.APP_SECRET
+ "&code=" + code + "&grant_type=authorization_code";
HttpService.getWxToken(url, new NetworkInterfaceListener() {
@Override
public void onSuccess(BaseBean data) {
// TODO Auto-generated method stub
if(data != null) {
Message msg = mHandler.obtainMessage();
msg.what = 1;
msg.obj = data;
mHandler.sendMessage(msg);
}
}
@Override
public void onError(IOException e) {
// TODO Auto-generated method stub
}
});
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
result = R.string.errcode_cancel;
break;
case BaseResp.ErrCode.ERR_AUTH_DENIED:
result = R.string.errcode_deny;
break;
default:
result = R.string.errcode_unknown;
break;
}
Toast.makeText(this, result, Toast.LENGTH_LONG).show();
}
在这个函数里面当返回err_ok时,通过指定的url通过get方法获取token,然后根据token可以获取个人信息之类的东西。其中appid和appsecret都是注册的时候官方分配的。这个关键的地方是实现WXEntryActivity.java这个文件,要在指定目录实现。可以在这个文件中做一个loading框不停的旋转。通过获取token之后获取个人信息,然后再登陆自己项目的第三方登陆接口。整个流程就是这样。
标签:
原文地址:http://www.cnblogs.com/alvinhuai/p/5045086.html