我想使用Golang Graph SDK请求一个用户的日历,但我只是得到随机的Odata值作为响应,而不是Json或其他格式。
首先,我使用Github上的官方文档和问题进行了连接和请求:
package main
import (
"context"
"fmt"
azidentity "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
a "github.com/microsoft/kiota-authentication-azure-go"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
cv "github.com/microsoftgraph/msgraph-sdk-go/users/item/calendarview"
)
func main() {
cred, err := azidentity.NewClientSecretCredential(
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
nil,
)
auth, err := a.NewAzureIdentityAuthenticationProviderWithScopes(cred, []string{"https://graph.microsoft.com/.default"})
adapter, err := msgraphsdk.NewGraphRequestAdapter(auth)
client := msgraphsdk.NewGraphServiceClient(adapter)
if err != nil {
fmt.Println("Fehler: ", err)
}
requestStartDateTime := "2022-11-01T00:00:00"
requestEndDateTime := "2022-11-17T00:00:00"
query := cv.CalendarViewRequestBuilderGetQueryParameters{
// Orderby: []string{"start/dateTime"},
StartDateTime: &requestStartDateTime,
EndDateTime: &requestEndDateTime,
Select: []string{
"subject",
"start",
"end",
},
}
options := cv.CalendarViewRequestBuilderGetRequestConfiguration{
QueryParameters: &query,
}
_ = options
result, err := client.UsersById("redacted@domain.com").CalendarView().Get(context.Background(), &options)
if err != nil {
// const colorRed = "\033[0;31m"
fmt.Println(err)
}
fmt.Println(result)
}
我只得到这样的回应
&{{map[@odata.context:0xc0002310d0] <nil> 0xc00043c030} [0xc0003da310 0xc0003da120 0xc0001daa11 0xc0001dad20 0xc0003dbf01 0xc0003db110 0xc0003da401 0xc0003db681 0xc0003da901 0xc0003daa81]}
我期待的是一个Json输出,而不是随机odata上下文值。是否有什么明显的东西我错过了?如果我改变了StartDateTime和EndDateTime,Oxc....值的计数会改变。
2条答案
按热度按时间8yoxcaq71#
您不应该按原样访问
result
对象,因为您在无法正确导航其属性的情况下公开了内部struct
响应详细信息。您应该使用
GetValue
来检索响应,它将返回一个Eventable
对象切片,您可以在该切片上迭代以获取所需的 calendar 属性:u7up0aaq2#
我使用了来自@tmarwen的信息,并在代码中添加了另一个变体中的循环: