mirror of
https://github.com/OpenListTeam/OpenList.git
synced 2025-07-18 17:38:07 +08:00
add dropbox api (#295)
This commit is contained in:
@ -10,14 +10,13 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
RefreshToken string `json:"refresh_token" required:"true"`
|
|
||||||
driver.RootPath
|
driver.RootPath
|
||||||
|
UseOnlineAPI bool `json:"use_online_api" default:"true"`
|
||||||
OauthTokenURL string `json:"oauth_token_url" default:"https://api.oplist.org/dropboxs/renewapi"` // TODO: replace
|
APIAddress string `json:"api_url_address" default:"https://api.oplist.org/dropboxs/renewapi"`
|
||||||
ClientID string `json:"client_id" required:"false" help:"Keep it empty if you don't have one"`
|
ClientID string `json:"client_id" required:"false" help:"Keep it empty if you don't have one"`
|
||||||
ClientSecret string `json:"client_secret" required:"false" help:"Keep it empty if you don't have one"`
|
ClientSecret string `json:"client_secret" required:"false" help:"Keep it empty if you don't have one"`
|
||||||
|
|
||||||
AccessToken string
|
AccessToken string
|
||||||
|
RefreshToken string `json:"refresh_token" required:"true"`
|
||||||
RootNamespaceId string
|
RootNamespaceId string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,9 +15,39 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (d *Dropbox) refreshToken() error {
|
func (d *Dropbox) refreshToken() error {
|
||||||
|
// 使用在线API刷新Token,无需ClientID和ClientSecret
|
||||||
|
if d.UseOnlineAPI && len(d.APIAddress) > 0 {
|
||||||
|
u := d.APIAddress
|
||||||
|
var resp struct {
|
||||||
|
RefreshToken string `json:"refresh_token"`
|
||||||
|
AccessToken string `json:"access_token"`
|
||||||
|
ErrorMessage string `json:"text"`
|
||||||
|
}
|
||||||
|
_, err := base.RestyClient.R().
|
||||||
|
SetResult(&resp).
|
||||||
|
SetQueryParams(map[string]string{
|
||||||
|
"refresh_ui": d.RefreshToken,
|
||||||
|
"server_use": "true",
|
||||||
|
"driver_txt": "baiduyun_go",
|
||||||
|
}).
|
||||||
|
Get(u)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if resp.RefreshToken == "" || resp.AccessToken == "" {
|
||||||
|
if resp.ErrorMessage != "" {
|
||||||
|
return fmt.Errorf("failed to refresh token: %s", resp.ErrorMessage)
|
||||||
|
}
|
||||||
|
return fmt.Errorf("empty token returned from official API")
|
||||||
|
}
|
||||||
|
d.AccessToken = resp.AccessToken
|
||||||
|
d.RefreshToken = resp.RefreshToken
|
||||||
|
op.MustSaveDriverStorage(d)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
url := d.base + "/oauth2/token"
|
url := d.base + "/oauth2/token"
|
||||||
if utils.SliceContains([]string{"", DefaultClientID}, d.ClientID) {
|
if utils.SliceContains([]string{"", DefaultClientID}, d.ClientID) {
|
||||||
url = d.OauthTokenURL
|
url = d.APIAddress
|
||||||
}
|
}
|
||||||
var tokenResp TokenResp
|
var tokenResp TokenResp
|
||||||
resp, err := base.RestyClient.R().
|
resp, err := base.RestyClient.R().
|
||||||
|
Reference in New Issue
Block a user