英文:
How to get Azure AD JWT in GO
问题
所以我正在尝试使用Go语言。我需要手动调用一个受Azure AD保护的端点的REST调用。我正在使用Azure Identity包,但是我仍然无法获得令牌。
package main
import (
"context"
"fmt"
azi "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
)
func main() {
cred, err := azi.NewInteractiveBrowserCredential(nil)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println("没有错误 😊")
var ctx = context.TODO()
fmt.Println(cred.GetToken(ctx))
}
然后会出现以下错误响应:
# command-line-arguments
.\main.go:19:27: 转换为context.Context缺少参数: context.Context()
有人可以指点我做错了什么吗?
英文:
So I'm testing the waters with Go. I need to manually make a REST call to an Azure AD protected endpoint. I'm using the Azure Identity package, but still I am not able to get the token.
package main
import (
"context"
"fmt"
azi "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
)
func main() {
cred, err := azi.NewInteractiveBrowserCredential(nil)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println("No error 😎")
var ctx = context.Context()
fmt.Println(cred.GetToken(ctx))
}
This then yields the following error response
# command-line-arguments
.\main.go:19:27: missing argument to conversion to context.Context: context.Context()
Can someone please point me in the right direction of what I am doing wrong?
答案1
得分: 1
context.Context 是一个接口,而不是一个方法(https://pkg.go.dev/context#Context),这就是为什么你会得到这个错误,你试图将空值转换为该类型。
对 GetToken 方法的调用需要一个实现了 context.Context 的对象。
尝试将 var ctx = context.Context()
替换为 var ctx = context.Background()
在这里阅读更多关于 context.Context 的信息:https://pkg.go.dev/context
英文:
context.Context is an interface, not a method (https://pkg.go.dev/context#Context) that is why you're getting the error, you're attempting to convert nothing to that type.
Calls to the GetToken method require something that implements context.Context.
Try replacing var ctx = context.Context()
with var ctx = context.Background()
Read more about context.Context here https://pkg.go.dev/context
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论