您的位置:首页 > 移动开发 > 微信开发

微信第三方登陆

2016-03-14 21:01 501 查看
1.找到以公司账户申请的APP_ID和APPSecret,都是唯一的,应该在做微信支付的时候就已经有了。

2.看微信开发者平台提供的文档(部分同仁都认为它的文档是最LOW的,Demo都没有,很容易看迷糊

)。

3.不过可以直接调API,俗话说第三方的事都不是事。

<span style="font-size:18px;"> IWXAPI wxapi = WXAPIFactory.createWXAPI(this, Constants.APP_ID);//调用微信的

LoginUtil.loginWithWX(wxapi);//这是自己写的,方法如下

</span>
<span style="font-size:18px;">public static void loginWithWX(IWXAPI api) {
SendAuth.Req req = new SendAuth.Req();
req.scope = "snsapi_userinfo";
req.state = "wechat_sdk_demo_test";
api.sendReq(req);
}</span>
注意:上边的代码写在哪里都可以,只要是符合自己公司规范的即可。没有类名的限制

4.调用以上API后微信登陆就可以拉起来了,(前提是你的APP_ID要和申请SDK时的保持一致),看到这个页面你大可以放心自己做的是对的了

5.较重要的一步:

根据文档新建一个类:wxapi包下的WXEntryActivity,切记啊同学们,不是支付的时候写的那个WXPayEntryActivity

了,你妹啊。

6.在上面WXEntryActivity类的回调里,我直接粘贴代码

@Override
public void onResp(BaseResp baseResp) {
switch (baseResp.errCode) {
case BaseResp.ErrCode.ERR_OK:
String code = ((SendAuth.Resp) baseResp).code;
<span style="color:#ff0000;">   <span style="white-space:pre">	</span>//这样就可以打印一下获取的code,到这里基本完成科目二了</span>
break;
<span style="white-space:pre">	</span>}
}
当然,不要忘记其他生命周期的配置

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
api = WXAPIFactory.createWXAPI(this, Constants.APP_ID);
api.handleIntent(getIntent(), this);
}

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
api.handleIntent(intent, this);
}
以上两个方法在微信支付里也是同样的配置的。


7.先和后台沟通一下,遇到牛B的后台,你获取到code就足够了,可以直接调登陆接口的。一定要先沟通哦。



8.如果仅仅获取到code不够的话,咱继续往下走

访问微信官方提供的接口:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=<span style="color:#ff0000;">APPID</span>&secret=<span style="color:#ff0000;">SECRET</span>&code=<span style="color:#ff0000;">CODE</span>&grant_type=authorization_code
</pre><pre code_snippet_id="1609968" snippet_file_name="blog_20160314_10_685157" name="code" class="java">上面标红色的部分是要替换为自己的APPID,APPSecret,和刚刚获取到的code,然后你才能获取到Token和openID。
具体的数据返回格式和文档一样
<pre name="code" class="java">{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE",
"unionid":"o6_bmasdasdsad6_2sgVt7hMZOPfL"
}



9.如果需要的话这里还要获取一下用户的微信个人信息

我们已经拿到了token和openId,所以直接访问官方提供的

<pre name="code" class="html">https://api.weixin.qq.com/sns/userinfo?access_token=<span style="color:#ff0000;">ACCESS_TOKEN</span>&openid=><span style="background-color: rgb(255, 255, 255);"><span style="color:#ff0000;">OPENID</span></span>


标红色的部分记得替换哦

数据成功返回示例看文档即可

{
"openid":"OPENID",
"nickname":"NICKNAME",
"sex":1,
"province":"PROVINCE",
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
"privilege":[
"PRIVILEGE1",
"PRIVILEGE2"
],
"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
可以了,昵称、城市、性别什么的都获取到了,可以直接调自己公司的登陆接口了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: