Android 微信授权登录、获取Wx用户信息,解决无法回调问题
2015-10-24 20:47
1151 查看
微信授权登录,官方说的不是很清楚、所以导致有一部分的坑。
据此记载..(坑)
1.微信注册应用平台的应用签名为 打包keystore的MD5 小写并且去掉 ":" 号组成、或者去下载 微信签名生成工具 输入项目的packageName也可以查看到。
2.授权没反应,监测微信App_Id是否正确、是否按照上1.生成。 当前的App是否正式签名?也就是正式App.. DeBug签名环境的App貌似无法调动微信。
3.关于回调:是否按照官方要求注册WXEntryActivity并且继承Acticiy、
此Activity不能改名,并且在你的 package(项目报名).wxapi.WXEntryActivity.java 下面。 注册* 每段代码都别少...
4.回调方法onResp() 方法没有触发回调、请监测WXEntryActivity onCreate中是否调用此方法
mApi.handleIntent(this.getIntent(), this);
5.当授权时候进入WXEntryActivity、当前背景可能是黒或白,为了不影响用户体验,可以把当前Activity设置为透明。android:theme="@android:style/Theme.Translucent"
,可以参照上3. WXEntryActivity注册格式。
以上便是授权登录遇到的坑、只怪Wx要求格式的有个性、多多少少会遇到这样的坑。
授权登录并且拿取Wx用户信息,简单三部曲:
具体可参考:微信授权登录取用户信息步骤
部分代码:
具体代码:微信授权登录 - 案例 Dome。
参考、感谢:
1./article/2590647.html
2.https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN
据此记载..(坑)
1.微信注册应用平台的应用签名为 打包keystore的MD5 小写并且去掉 ":" 号组成、或者去下载 微信签名生成工具 输入项目的packageName也可以查看到。
2.授权没反应,监测微信App_Id是否正确、是否按照上1.生成。 当前的App是否正式签名?也就是正式App.. DeBug签名环境的App貌似无法调动微信。
3.关于回调:是否按照官方要求注册WXEntryActivity并且继承Acticiy、
此Activity不能改名,并且在你的 package(项目报名).wxapi.WXEntryActivity.java 下面。 注册* 每段代码都别少...
<!--注册微信回调 WXEntryActivity --> <activity android:name=".wxapi.WXEntryActivity" android:exported="true" android:label="@string/app_name" android:launchMode="singleTop" android:theme="@android:style/Theme.Translucent" />
4.回调方法onResp() 方法没有触发回调、请监测WXEntryActivity onCreate中是否调用此方法
mApi.handleIntent(this.getIntent(), this);
public class WXEntryActivity extends Activity implements IWXAPIEventHandler { private final String TAG = this.getClass().getSimpleName(); public static final String APP_ID = "请自己填写"; public static final String APP_SECRET = "请自己填写"; private IWXAPI mApi; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mApi = WXAPIFactory.createWXAPI(this, APP_ID, true); mApi.handleIntent(this.getIntent(), this); } //微信发送的请求将回调到onReq方法 @Override public void onReq(BaseReq baseReq) { } //发送到微信请求的响应结果 @Override public void onResp(BaseResp resp) { switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK: //发送成功 break; case BaseResp.ErrCode.ERR_USER_CANCEL: //发送取消 break; case BaseResp.ErrCode.ERR_AUTH_DENIED: //发送被拒绝 break; default: //发送返回 break; } finish(); } }
5.当授权时候进入WXEntryActivity、当前背景可能是黒或白,为了不影响用户体验,可以把当前Activity设置为透明。android:theme="@android:style/Theme.Translucent"
,可以参照上3. WXEntryActivity注册格式。
以上便是授权登录遇到的坑、只怪Wx要求格式的有个性、多多少少会遇到这样的坑。
授权登录并且拿取Wx用户信息,简单三部曲:
* * 1.sendReq(req). 用户授权可以拿到 code * * 2.用code.调用Wx接口拿到 openid & accessToken * * 3.通过openid & accessToken 俩参数可以拿到最终用户信息 * *
具体可参考:微信授权登录取用户信息步骤
部分代码:
/** * 获取openid accessToken值用于后期操作 * * @param code 请求码 */ private void getAccess_token(final String code) { new Thread(new Runnable() { @Override public void run() { String path = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + APP_ID + "&secret=" + APP_SECRET + "&code=" + code + "&grant_type=authorization_code"; try { JSONObject jsonObject = JsonUtils.initSSLWithHttpClinet(path);// 请求https连接并得到json结果 if (null != jsonObject) { String openid = jsonObject.getString("openid").toString().trim(); String access_token = jsonObject.getString("access_token").toString().trim(); getUserMesg(access_token, openid); } } catch (Exception e) { e.printStackTrace(); } } }).start(); } /** * 获取微信的个人信息 * * @param access_token * @param openid */ private void getUserMesg(final String access_token, final String openid) { String path = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openid; try { JSONObject jsonObject = JsonUtils.initSSLWithHttpClinet(path);// 请求https连接并得到json结果 if (null != jsonObject) { String nickname = jsonObject.getString("nickname"); int sex = Integer.parseInt(jsonObject.get("sex").toString()); String headimgurl = jsonObject.getString("headimgurl"); Log.e(TAG, "getUserMesg 拿到了用户Wx基本信息.. nickname:" + nickname); } } catch (Exception e) { e.printStackTrace(); } return; }
具体代码:微信授权登录 - 案例 Dome。
参考、感谢:
1./article/2590647.html
2.https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN
相关文章推荐
- 微信浏览器内建的WeixinJSBridge 实现“返回”操作 WeixinJSBridge.call('closeWindow');
- 微信运动刷步数教程详解
- 微信公众平台开发模式 微信 语音识别 公众平台 消息接口 语音识别
- TurboMail邮件系统新版本V7.0,和微信一起玩!
- 腾讯发布的微信生活白皮书,透露了哪些有意思的数据?
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
- 一个小程序看流的读取
- 仿微信随手指滑动页面菜单图标文字颜色渐变
- 017.输出不规整数组
- 腾讯首次公布微信最全用户数据【完整版】
- 腾讯首次公布微信最全用户数据【完整版】
- android支付之微信支付
- ShareSDK关于微信分享问题
- 微信“无法回答问题设置”失效
- Android使用Intent一键分享图片文字到腾讯、新浪、开心、微信等
- 微信浏览器缓存问题
- ios7 苹果原生二维码扫描(和微信类似)
- Android对接微信支付体验
- 微信开发(一):用JSAPI做微信支付+微信卡包(代金券)
- 微信公众平台开发问答