为了账号安全,请及时绑定邮箱和手机立即绑定

获取 gitlab repo 列表:说“401 Unauthorized”

获取 gitlab repo 列表:说“401 Unauthorized”

Go
MYYA 2022-10-24 09:37:25
我正在尝试使用 OAuth 令牌从 gitlab 获取 repo 列表。我的代码看起来像这样......(“github.com/xanzy/go-gitlab”)    repositories := []string{}    client, _ := gitlab.NewClient(gitRepoRequest.Token, gitlab.WithBaseURL("https://gitlab.com/api/v4"))    fmt.Println("client...", client.ContainerRegistry)    projects, _, projectListErr := client.Projects.ListProjects(&gitlab.ListProjectsOptions{})    for _, project := range projects {        fmt.Println("ID===", project.ID)        fmt.Println("NAME===", project.Name)    }    if projectListErr != nil {        // return err    }我无法获得项目列表..“projectListErr”说... GET https://gitlab.com/api/v4/projects: 401 {message: 401 Unauthorized}我对令牌值很有信心,因为我正在使用相同令牌获取回购的所有分支列表,该代码看起来像......(“github.com/go-git/go-git/v5”)rem := git.NewRemote(gitMemory.NewStorage(), &gitConfig.RemoteConfig{    Name: "origin",    URLs: []string{gitBranchesRequest.Repository},})refs, listErr := rem.List(&git.ListOptions{    Auth: &gitHttp.BasicAuth{Username: gitUserName, Password: gitBranchesRequest.Token},})这是否意味着我正在使用的库存在问题?github.com/xanzy/go-gitlab
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

这取决于您使用的令牌类型

例如,项目访问令牌很可能使您可以访问存储库(针对该项目)的所有分支列表。

但是对于使用/projectsAPI,401 意味着认证信息无效或丢失。

因此,请确保使用PAT(个人访问令牌),链接到用户,而不是项目。


OP Keval Bhogayata评论中补充道:

我发现了这个问题。

我正在使用的库(“ xanzy/go-gitlab”)具有针对不同令牌的不同客户端创建功能。

我一直在使用支持个人访问令牌的功能。相反,我应该使用 " NewOAuthClient" !

// NewOAuthClient returns a new GitLab API client. To use API methods which

// require authentication, provide a valid oauth token.

func NewOAuthClient(token string, options ...ClientOptionFunc) (*Client, error)


查看完整回答
反对 回复 2022-10-24
  • 1 回答
  • 0 关注
  • 722 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信