java做后台移动端微信第三方登录

刚开始写该接口的时候一脸茫然,后来发现,说白了就是对微信API的调用。按照步骤,想获取什么参数,就发送什么URL链接请求,微信API会返回给你想要的参数。代码就不贴了,无非就是通过URL,发送请求,然后获取参数,很容易实现。具体步骤微信官方文档有,在此也借鉴了一下。

** 微信登录步骤流程** 

java做后台移动端微信第三方登录_第1张图片

1.开放平台注册

    在进行微信OAuth2.0授权登录接入之前,首先在微信开放平台注册开发者帐号,获得相应的AppID和AppSecret,申请微信登录且通过审核后,方可进行下一步接口调用。

2.授权登录,获取code

    开发者需要配合使用微信开放平台提供的SDK进行授权登录请求接入。正确接入SDK后并拥有相关授权域权限后,开发者移动应用会在终端本地拉起微信应用进行授权登录,微信用户确认后微信将拉起开发者移动应用,并带上授权临时票据(code)。

官方调用示例:

java做后台移动端微信第三方登录_第2张图片
java做后台移动端微信第三方登录_第3张图片
WEB端调用:

发送如下URL请求,微信服务器端会返回对应的code及其它参数

String url = "https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect";

请求参数说明:

        APPID:为平台注册时获取的appid

        REDIRECT_URI:重定向地址,需要进行UrlEncode

        response_type:填code

        scope:应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即可

        state:用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验

3.通过code获取access_token

发送如下URL请求,获取access_token等参数

String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
请求参数说明:  
 

        APPID:                   应用唯一标识,在微信开放平台提交应用审核通过后获得

        AppSecret:             应用密钥AppSecret,在微信开放平台提交应用审核通过后获得

        code:                     填写第二步获取的code参数

        grant_type:            填authorization_code(固定,来自于官方文档)

正确的返回:

"access_token":"ACCESS_TOKEN", 
"expires_in":7200, 
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID", 
"scope":"SCOPE",
"unionid":"o6_bmasdasdsad6_2sgVt7hMZOPfL"

}

返回参数说明:

            access_token         接口调用凭证

            expires_in         access_token接口调用凭证超时时间,单位(秒)

            refresh_token 用户刷新access_token

            openid                 授权用户唯一标识

            scope                 用户授权的作用域,使用逗号(,)分隔

            unionid                 当且仅当该移动应用已获得该用户的userinfo授权时,才会出现该字段

错误返回样例:

    {"errcode":40029,"errmsg":"invalid code"}

4.通过access_token获取用户微信信息

String url = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID";

参数说明:

        ACCESS_TOKEN:第三步获取的access_token 

        OPENID:第三步获取的openId

返回参数说明:

            openId:                          用户标识

            nickName:                     用户昵称

            sex:                                男1,女2,0未知

            country:                         国家

            province:                       省份

            city:                               城市

            headImgUrl:                  头像链接

            privilegeList:                  用户特权信息

            unionId:                        全局唯一标识

你可能感兴趣的:(第三方登录)