Skip to content

Commit c29a3e5

Browse files
committed
binarywang#697 企业微信OAuth2.0增加对snsapi_userinfo和snsapi_privateinfo的支持
1 parent 013835f commit c29a3e5

File tree

3 files changed

+35
-9
lines changed

3 files changed

+35
-9
lines changed

weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,16 @@ public static class OAuth2Scope {
234234
* 不弹出授权页面,直接跳转,只能获取用户openid.
235235
*/
236236
public static final String SNSAPI_BASE = "snsapi_base";
237+
237238
/**
238239
* 弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息.
239240
*/
240241
public static final String SNSAPI_USERINFO = "snsapi_userinfo";
242+
243+
/**
244+
* 手动授权,可获取成员的详细信息,包含手机、邮箱。只适用于企业微信或企业号.
245+
*/
246+
public static final String SNSAPI_PRIVATEINFO = "snsapi_privateinfo";
241247
}
242248

243249
/**

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpOAuth2Service.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,19 @@ public interface WxCpOAuth2Service {
3434
*/
3535
String buildAuthorizationUrl(String redirectUri, String state);
3636

37+
/**
38+
* <pre>
39+
* 构造oauth2授权的url连接
40+
* 详情请见: http://qydev.weixin.qq.com/wiki/index.php?title=企业获取code
41+
* </pre>
42+
*
43+
* @param redirectUri 跳转链接地址
44+
* @param state 状态码
45+
* @param scope 取值参考me.chanjar.weixin.common.api.WxConsts.OAuth2Scope类
46+
* @return url
47+
*/
48+
String buildAuthorizationUrl(String redirectUri, String state, String scope);
49+
3750
/**
3851
* <pre>
3952
* 用oauth2获取用户信息
@@ -78,7 +91,7 @@ public interface WxCpOAuth2Service {
7891
* 需要有对应应用的使用权限,且成员必须在授权应用的可见范围内。
7992
* </pre>
8093
*
81-
* @param userTicket 成员票据
94+
* @param userTicket 成员票据
8295
*/
8396
WxCpUserDetail getUserDetail(String userTicket) throws WxErrorException;
8497
}

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpOAuth2ServiceImpl.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.google.gson.JsonElement;
55
import com.google.gson.JsonObject;
66
import com.google.gson.JsonParser;
7+
import me.chanjar.weixin.common.api.WxConsts;
78
import me.chanjar.weixin.common.error.WxErrorException;
89
import me.chanjar.weixin.common.util.http.URIUtil;
910
import me.chanjar.weixin.common.util.json.GsonHelper;
@@ -37,16 +38,22 @@ public String buildAuthorizationUrl(String state) {
3738

3839
@Override
3940
public String buildAuthorizationUrl(String redirectUri, String state) {
40-
String url = "https://open.weixin.qq.com/connect/oauth2/authorize?";
41-
url += "appid=" + this.mainService.getWxCpConfigStorage().getCorpId();
42-
url += "&redirect_uri=" + URIUtil.encodeURIComponent(redirectUri);
43-
url += "&response_type=code";
44-
url += "&scope=snsapi_base";
41+
return this.buildAuthorizationUrl(redirectUri, state, WxConsts.OAuth2Scope.SNSAPI_BASE);
42+
}
43+
44+
@Override
45+
public String buildAuthorizationUrl(String redirectUri, String state, String scope) {
46+
StringBuilder url = new StringBuilder("https://open.weixin.qq.com/connect/oauth2/authorize?");
47+
url.append("appid=").append(this.mainService.getWxCpConfigStorage().getCorpId());
48+
url.append("&redirect_uri=").append(URIUtil.encodeURIComponent(redirectUri));
49+
url.append("&response_type=code");
50+
url.append("&scope=").append(scope);
51+
4552
if (state != null) {
46-
url += "&state=" + state;
53+
url.append("&state=").append(state);
4754
}
48-
url += "#wechat_redirect";
49-
return url;
55+
url.append("#wechat_redirect");
56+
return url.toString();
5057
}
5158

5259
@Override

0 commit comments

Comments
 (0)