diff --git a/object/provider.go b/object/provider.go
index 160c86d3..fcb19ca0 100644
--- a/object/provider.go
+++ b/object/provider.go
@@ -26,12 +26,14 @@ type Provider struct {
Name string `xorm:"varchar(100) notnull pk" json:"name"`
CreatedTime string `xorm:"varchar(100)" json:"createdTime"`
- DisplayName string `xorm:"varchar(100)" json:"displayName"`
- Category string `xorm:"varchar(100)" json:"category"`
- Type string `xorm:"varchar(100)" json:"type"`
- Method string `xorm:"varchar(100)" json:"method"`
- ClientId string `xorm:"varchar(100)" json:"clientId"`
- ClientSecret string `xorm:"varchar(100)" json:"clientSecret"`
+ DisplayName string `xorm:"varchar(100)" json:"displayName"`
+ Category string `xorm:"varchar(100)" json:"category"`
+ Type string `xorm:"varchar(100)" json:"type"`
+ Method string `xorm:"varchar(100)" json:"method"`
+ ClientId string `xorm:"varchar(100)" json:"clientId"`
+ ClientSecret string `xorm:"varchar(100)" json:"clientSecret"`
+ ClientId2 string `xorm:"varchar(100)" json:"clientId2"`
+ ClientSecret2 string `xorm:"varchar(100)" json:"clientSecret2"`
Host string `xorm:"varchar(100)" json:"host"`
Port int `json:"port"`
diff --git a/web/src/ProviderEditPage.js b/web/src/ProviderEditPage.js
index 7440770c..dcc2370c 100644
--- a/web/src/ProviderEditPage.js
+++ b/web/src/ProviderEditPage.js
@@ -257,7 +257,8 @@ class ProviderEditPage extends React.Component {
- {this.state.provider.type === "WeCom" || this.state.provider.type === "WeChat" ? (
+ {
+ this.state.provider.type !== "WeCom" ? null : (
{Setting.getLabel(i18next.t("provider:Method"), i18next.t("provider:Method - Tooltip"))} :
@@ -272,7 +273,8 @@ class ProviderEditPage extends React.Component {
- ) : null}
+ )
+ }
{this.getClientIdLabel()}
@@ -293,6 +295,32 @@ class ProviderEditPage extends React.Component {
}} />
+ {
+ this.state.provider.type !== "WeChat" ? null : (
+
+
+
+ {Setting.getLabel(i18next.t("provider:Client ID 2"), i18next.t("provider:Client ID 2 - Tooltip"))}
+
+
+ {
+ this.updateProviderField('clientId2', e.target.value);
+ }} />
+
+
+
+
+ {Setting.getLabel(i18next.t("provider:Client secret 2"), i18next.t("provider:Client secret 2 - Tooltip"))}
+
+
+ {
+ this.updateProviderField('clientSecret2', e.target.value);
+ }} />
+
+
+
+ )
+ }
{this.state.provider.category === "Storage" ? (
diff --git a/web/src/auth/Provider.js b/web/src/auth/Provider.js
index 3905681c..5d4b7f49 100644
--- a/web/src/auth/Provider.js
+++ b/web/src/auth/Provider.js
@@ -33,8 +33,8 @@ const authInfo = {
WeChat: {
scope: "snsapi_login",
endpoint: "https://open.weixin.qq.com/connect/qrconnect",
- slientScope: "snsapi_userinfo",
- silentEndpoint: "https://open.weixin.qq.com/connect/oauth2/authorize"
+ mpScope: "snsapi_userinfo",
+ mpEndpoint: "https://open.weixin.qq.com/connect/oauth2/authorize"
},
Facebook: {
scope: "email,public_profile",
@@ -200,12 +200,10 @@ export function getAuthUrl(application, provider, method) {
} else if (provider.type === "QQ") {
return `${endpoint}?client_id=${provider.clientId}&redirect_uri=${redirectUri}&scope=${scope}&response_type=code&state=${state}`;
} else if (provider.type === "WeChat") {
- if (provider.method === "Silent") {
- return `${authInfo[provider.type].silentEndpoint}?appid=${provider.clientId}&redirect_uri=${redirectUri}&state=${state}&scope=${authInfo[provider.type].slientScope}&response_type=code#wechat_redirect`;
- } else if (provider.method === "Normal") {
- return `${endpoint}?appid=${provider.clientId}&redirect_uri=${redirectUri}&scope=${scope}&response_type=code&state=${state}#wechat_redirect`;
+ if (navigator.userAgent.includes("MicroMessenger")) {
+ return `${authInfo[provider.type].mpEndpoint}?appid=${provider.clientId}&redirect_uri=${redirectUri}&state=${state}&scope=${authInfo[provider.type].mpScope}&response_type=code#wechat_redirect`;
} else {
- return `https://error:not-supported-provider-method:${provider.method}`;
+ return `${endpoint}?appid=${provider.clientId}&redirect_uri=${redirectUri}&scope=${scope}&response_type=code&state=${state}#wechat_redirect`;
}
} else if (provider.type === "Facebook") {
return `${endpoint}?client_id=${provider.clientId}&redirect_uri=${redirectUri}&scope=${scope}&response_type=code&state=${state}`;
diff --git a/web/src/locales/zh/data.json b/web/src/locales/zh/data.json
index 3dab23b5..c3407613 100644
--- a/web/src/locales/zh/data.json
+++ b/web/src/locales/zh/data.json
@@ -232,7 +232,7 @@
"Link copied to clipboard successfully": "Link copied to clipboard successfully",
"Metadata": "Metadata",
"Metadata - Tooltip": "Metadata - Tooltip",
- "Method": "方式",
+ "Method": "方法",
"Method - Tooltip": "登录行为,二维码或者静默授权登录",
"Name": "名称",
"Parse": "Parse",