public class Wechats extends Object
| 构造器和说明 |
|---|
Wechats() |
| 限定符和类型 | 方法和说明 |
|---|---|
static String |
buildAuthorizeUrl(String appid,
String redirect,
String state) |
static String |
buildAuthorizeUrl(String appid,
String charset,
String redirect,
String state) |
static String |
buildAuthorizeUrl(String appid,
String charset,
String redirect,
String state,
String scope)
构建授权地址
|
static String |
getAccessToken(String appid,
String secret)
Gets global access token
|
static String |
getJsapiTicket(String accessToken) |
static Map<String,Object> |
getOAuth2(String appid,
String secret,
String code)
1、构建的微信授权地址返回到客户端
2、用户客户端访问此微信授权地址进行登录授权
3、微信会让用户客户端重定向到redirect(应用的回调地址)并附带code参数
4、应用通过code换取网页授权access_token和openId
scope=snsapi_userinfo
{
"access_token":"OezXcEiiBSKSxW0eow",
"expires_in":7200,
"refresh_token":"OezXcqDQy52232WDXB3Msuzq1A",
"openid":"oLVPpjqs9BhvzwPj5A-vTYAX3GLc",
"scope":"snsapi_userinfo,"
}
scope=snsapi_base
{
"access_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-oJ9VmO-0Z-_izfnSAX_s0aqDsYkW4s8W5dLZ4iyNj5Y6vey3dgDtFki5C8r6D0E6mSVxxtb8BjLMhb-mCyT_Yg",
"expires_in": 7200,
"refresh_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-oJ9VmO-0Z-_izfnSAX_s0aqDsYkW4s8W5dLZ4iyNj5YBkF0ZUH1Ew8Iqea6x_itq13sYDqP1D7ieaDy9u2AHHw",
"openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc",
"scope": "snsapi_base"
}
获取微信openID及授权access_token
password模式:https://api.oauth2server.com/token?
|
static String |
getTicket(String type,
String accessToken)
Gets jsapi ticket
|
static Map<String,Object> |
getUserInfoByGlobal(String accessToken,
String openid)
1、用户关注以及回复消息的时候,均可以获得用户的OpenID
|
static Map<String,Object> |
getUserInfoByOAuth2(String accessToken,
String openid)
{
"openid":"oLVPpjqs9BhvzwPj5A-vTYAX3GLc",
"nickname":"方倍",
"sex":1,
"language":"zh_CN",
"city":"Shenzhen",
"province":"Guangdong",
"country":"CN",
"headimgurl":"http://wx.qlogo.cn/mmopen/utpBBg18/0",
"privilege":[]
}
通过OAuth2.0方式弹出授权页面获得用户基本信息(因scope=snsapi_userinfo会弹出授权页面)
|
static Map<String,Object> |
refreshAccessToken(String appid,
String refreshToken)
Refresh the access token by refresh_token
|
static Map<String,String> |
shareUrl(String jsapiTicket,
String appid,
String url)
Returns the share url link to the wechat friend moments
|
public static String buildAuthorizeUrl(String appid, String redirect, String state)
public static String buildAuthorizeUrl(String appid, String charset, String redirect, String state)
public static String buildAuthorizeUrl(String appid, String charset, String redirect, String state, String scope)
appid - the appidcharset - the charset for params encodingredirect - the service urlstate - 在发送state之后,可以把state保存到Session以便用于后续回调时的比较。
这样做的目的是防止应用接受任意伪造的授权码(CSRF)。scope - snsapi_base :不弹出授权页面,直接跳转,只能获取用户openidsnsapi_userinfo:弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息
snsapi_login :登录
public static Map<String,Object> getOAuth2(String appid, String secret, String code)
1、构建的微信授权地址返回到客户端
2、用户客户端访问此微信授权地址进行登录授权
3、微信会让用户客户端重定向到redirect(应用的回调地址)并附带code参数
4、应用通过code换取网页授权access_token和openId
scope=snsapi_userinfo
{
"access_token":"OezXcEiiBSKSxW0eow",
"expires_in":7200,
"refresh_token":"OezXcqDQy52232WDXB3Msuzq1A",
"openid":"oLVPpjqs9BhvzwPj5A-vTYAX3GLc",
"scope":"snsapi_userinfo,"
}
scope=snsapi_base
{
"access_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-oJ9VmO-0Z-_izfnSAX_s0aqDsYkW4s8W5dLZ4iyNj5Y6vey3dgDtFki5C8r6D0E6mSVxxtb8BjLMhb-mCyT_Yg",
"expires_in": 7200,
"refresh_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-oJ9VmO-0Z-_izfnSAX_s0aqDsYkW4s8W5dLZ4iyNj5YBkF0ZUH1Ew8Iqea6x_itq13sYDqP1D7ieaDy9u2AHHw",
"openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc",
"scope": "snsapi_base"
}
获取微信openID及授权access_token
password模式:https://api.oauth2server.com/token?grant_type=password&username=USERNAME&password=PASSWORD&client_id=CLIENT_IDappid - the appidsecret - the secretcode - the aut url callback result data,
buildAuthorizeUrl(String, String, String, String, String)public static Map<String,Object> refreshAccessToken(String appid, String refreshToken)
appid - the appidrefreshToken - the refresh_tokenpublic static Map<String,Object> getUserInfoByOAuth2(String accessToken, String openid)
{
"openid":"oLVPpjqs9BhvzwPj5A-vTYAX3GLc",
"nickname":"方倍",
"sex":1,
"language":"zh_CN",
"city":"Shenzhen",
"province":"Guangdong",
"country":"CN",
"headimgurl":"http://wx.qlogo.cn/mmopen/utpBBg18/0",
"privilege":[]
}
通过OAuth2.0方式弹出授权页面获得用户基本信息(因scope=snsapi_userinfo会弹出授权页面)accessToken - the access token, getOAuth2(String, String, String)openid - the openid, getOAuth2(String, String, String)set scope=snsapi_userinfopublic static String getAccessToken(String appid, String secret)
appid - secret - public static Map<String,Object> getUserInfoByGlobal(String accessToken, String openid)
1、用户关注以及回复消息的时候,均可以获得用户的OpenID通过全局Access Token获取用户基本信息其中的FromUserName就是OpenID 2、返回数据格式 { "subscribe": 1, "openid": "oLVPpjqs2BhvzwPj5A-vTYAX4GLc", "nickname": "nickname", "sex": 1, "language": "zh_CN", "unionid": "unionid" // 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段 "city": "深圳", "province": "广东", "country": "中国", "headimgurl": "http://wx.qlogo.cn/mmopen/JcDicrZBlREhnNXZRudod9PmibRkIs5K2f1tUQ7lFjC63pYHaXGxNDgMzjGDEuvzYZbFOqtUXaxSdoZG6iane5ko9H30krIbzGv/0", "subscribe_time": 1386160805 // 用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间 } 1372307736
accessToken - the global access token, getAccessToken(String, String)openid - the openid, 用户关注以及回复消息时可获取此openidpublic static String getTicket(String type, String accessToken)
type - wx_card 卡券;jsapi js接口票据;accessToken - the global accessToken, getAccessToken(String, String)public static Map<String,String> shareUrl(String jsapiTicket, String appid, String url)
jsapiTicket - the jsapi ticket, getJsapiTicket(String)appid - the wechat appidurl - the url linkCopyright © 2023. All rights reserved.