tickstep / aliyunpan-api

阿里云盘API
Apache License 2.0
78 stars 19 forks source link

aliyunpan-api

GO语言封装的 aliyunpan 阿里云盘官方OpenAPI接口和网页端Web接口。你可以基于该接口库实现对阿里云盘的二次开发。
两种接口都可以实现对阿里云盘的文件访问,但是由于阿里OpenAPI目前接口开放有限,有部分功能只有web端接口具备,例如:分享、相册等。你可以根据需要自行选择,也可以两者融合使用。

go.dev reference License

关于登录Token

阿里官方OpenAPI的登录和网页版Web登录token是不一样的,方式也不一样,本仓库并没有这部分代码,你需要自行实现。

  1. 阿里官方OpenAPI的登录token,可以参考官方文档:https://www.yuque.com/aliyundrive/zpfszx/btw0tw
  2. 网页版Web的登录token,可以通过使用浏览器获取到的RefreshToken进行获取,样例如下:
    // get access token
    refreshToken := "f34b54eba1...706f389"
    webToken, err := aliyunpan_web.GetAccessTokenFromRefreshToken(refreshToken)
    if err != nil {
        fmt.Println("get web acccess token error")
        return
    }

快速使用教程

阿里官方OpenAPI接口

导入包

import "github.com/tickstep/aliyunpan-api/aliyunpan"
import "github.com/tickstep/aliyunpan-api/aliyunpan_open"

使用授权登录后得到的AccessToken创建OpenPanClient实例

    openPanClient := aliyunpan_open.NewOpenPanClient(openapi.ApiConfig{
        TicketId:     "",
        UserId:       "",
        ClientId:     "",
        ClientSecret: "",
    }, openapi.ApiToken{
        AccessToken: "eyJraWQiOiJLcU8iLC...jIUeqP9mZGZDrFLN--h1utcyVc",
        ExpiredAt:   1709527182,
    }, nil)

调用OpenPanClient相关方法可以实现对阿里云盘的相关操作

    // get user info
    ui, err := openPanClient.GetUserInfo()
    if err != nil {
        fmt.Println("get user info error")
        return
    }
    fmt.Println("当前登录用户:" + ui.Nickname)

    // do some file operation
    fi, _ := openPanClient.FileInfoByPath(ui.FileDriveId, "/我的文档")
    fmt.Println("\n我的文档 信息:")
    fmt.Println(fi)

网页版Web端接口

导入包

import "github.com/tickstep/aliyunpan-api/aliyunpan"
import "github.com/tickstep/aliyunpan-api/aliyunpan_web"

使用浏览器获取到的RefreshToken创建WebPanClient实例

    // get access token
    refreshToken := "f34b54eba1...706f389"
    webToken, err := aliyunpan_web.GetAccessTokenFromRefreshToken(refreshToken)
    if err != nil {
        fmt.Println("get acccess token error")
        return
    }

    // web pan client
    appConfig := aliyunpan_web.AppConfig{
        AppId: "25dzX3vbYqktVxyX",
        DeviceId: "T6ZJyY7JqX6EN2cDzLCxMVYZ",
        UserId:    "",
        Nonce:     0,
        PublicKey: "",
    }
    webPanClient := aliyunpan_web.NewWebPanClient(*webToken, aliyunpan_web.AppLoginToken{}, appConfig, aliyunpan_web.SessionConfig{
        DeviceName: "Chrome浏览器",
        ModelName:  "Windows网页版",
    })

    // create session
    webPanClient.CreateSession(&aliyunpan_web.CreateSessionParam{
        DeviceName: "Chrome浏览器",
        ModelName:  "Windows网页版",
    })

调用WebPanClient相关方法可以实现对阿里云盘的相关操作

    // get user info
    ui, err := webPanClient.GetUserInfo()
    if err != nil {
        fmt.Println("get user info error")
        return
    }
    fmt.Println("当前登录用户:" + ui.Nickname)

    // do some file operation
    fi, _ := webPanClient.FileInfoByPath(ui.FileDriveId, "/我的文档")
    fmt.Println("\n我的文档 信息:")
    fmt.Println(fi)

链接

tickstep/aliyunpan
阿里OpenAPI文档