我正在尝试使用 App Store Connect API。根据文档,首先我尝试生成 JWT 令牌。golang 中的代码如下: package main import ( "fmt" "io/ioutil" "log" "time" "github.com/dgrijalva/jwt-go" )var iss = "xxxxxxxxxxxxxxxxxxxxx"var kid = "xxxxx"func main() { bytes, err := ioutil.ReadFile("AuthKey.p8") if err!=nil { fmt.Println(err) } token := jwt.NewWithClaims(jwt.SigningMethodES256, jwt.MapClaims{ "iss": iss, "exp": time.Now().Unix()+6000, "aud": "appstoreconnect-v1", }) token.Header["kid"] = kid tokenString, err := token.SignedString(bytes) if err != nil { log.Fatal(err) } fmt.Println(tokenString) }AuthKey.p8 - 来自https://appstoreconnect.apple.com/access/api的 p8 私钥似乎 jwt lib 无法在签名密钥上使用此 p8,所以我收到错误: key is of invalid type也许有人已经遇到了同样的问题?或者有其他语言的例子吗?UPD: 在此建议之后,我将代码更新为:func main() { bytes, err := ioutil.ReadFile("AuthKey.p8") if err!=nil { fmt.Println(err) } block, _ := pem.Decode(bytes) key, err := x509.ParsePKCS8PrivateKey(block.Bytes) if err != nil { log.Fatal(err) } token := jwt.NewWithClaims(jwt.SigningMethodES256, jwt.MapClaims{ "iss": iss, "exp": time.Now().Unix()+6000, "aud": "appstoreconnect-v1", }) token.Header["kid"] = kid tokenString, err := token.SignedString(key) if err != nil { log.Fatal(err) } fmt.Println(tokenString)}并获取 JWT 令牌,但当我尝试使用它时,从 Apple api 获取了 401。 { "errors": [{ "status": "401", "code": "NOT_AUTHORIZED", "title": "Authentication credentials are missing or invalid.", "detail": "Provide a properly configured and signed bearer token, and make sure that it has not expired. Learn more about Generating Tokens for API Requests https://developer.apple.com/go/?id=api-generating-tokens" }]}
- 2 回答
- 0 关注
- 129 浏览
添加回答
举报
0/150
提交
取消