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",