创建应用及申请AppId
点击按钮创建应用
填写基本信息
填写平台信息
填写应用签名和报名,签名可以通过微信平台提供的签名获取工具进行获取 传送门[签名获取工具](https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=b6513fcf593d4a41d9c9a765ecb04240f1338794&lang=zh_CN)
提交审核,等待审核通过后获得AppSecert
将微信登录接入应用
引入微信api
compile ‘com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+’调用微信登录
“`
//APPID是指你应用在微信开放平台上的AppID,记得替换。
mWxApi = WXAPIFactory.createWXAPI(this, APPID, false);*// 将该app注册到微信* mWxApi.registerApp(APPID); SendAuth.Req req = new SendAuth.Req(); req.scope = "snsapi_userinfo";//可以获取用户信息 req.state = "wechat_sdk_demo_test";//用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击 mWxApi.sendReq(req);
创建WXEntryActivity接收回调(位置必须是项目包名.wxapi.WXEntryActivity)
public class WXEntryActivity implements IWXAPIEventHandler { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); *//该句必须写,不然没有回调* mWxApi.handleIntent(getIntent(),this); } @Override public void onReq(BaseReq baseReq) { } @Override public void onResp(BaseResp resp) { *//处理回调结果* switch (resp.errCode) { case BaseResp.ErrCode.ERR_AUTH_DENIED: ToastUtil.shortShow("授权出错"); break; case BaseResp.ErrCode.ERR_USER_CANCEL: ToastUtil.shortShow("取消登录"); break; case BaseResp.ErrCode.ERR_OK: ToastUtil.shortShow("授权成功,正在登录"); String code = ((SendAuth.Resp) resp).code; //通过该code值获取access_token //调用接口https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code //然后根据返回的access_token和code值调用如下接口获取用户信息 //https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN break; } } }
注意
在AndroidManifest.xml中对WXEntryActivity进行配置时必须设置android:exported=”true” 否则回调不起作用小结:
1.如果微信调起失败可能appId填写错误,或者当前app签名和申请appId时的签名不一致
2.调起微信同意授权后,回调不起做用可能原因:
mWxApi.handleIntent(getIntent(),this);没有写
或者清单文件配置中android:exported=”true”没有设置
提示:
尽可能将WXEntryActivity当做登录界面,如果WXEntryActivity为一个单独的界面时,授权成功后会显示一个白屏