J'ai écrit un code d'essai à la liste des seaux de Google Cloud Storage via l'API Cloud Storage, mais je reçois l'erreur ci-dessous lorsque je lance le code:utiliser l'API de stockage Google Cloud avec Go AppEngine
googleapi: Error 403: Forbidden, forbiddenFinished
J'ai vérifié les autorisations et le compte de service appengine a accès aux compartiments et l'application appengine et le compartiment de stockage en nuage sont sur le même projet.
Ceci est mon exemple de code:
package src
import (
"fmt"
"net/http"
"golang.org/x/oauth2/google"
storage "google.golang.org/api/storage/v1"
appengine "google.golang.org/appengine"
)
func init() {
http.HandleFunc("/", index)
}
func ListBuckets(r *http.Request, projectID string) ([]*storage.Bucket, error) {
ctx := appengine.NewContext(r)
client, err := google.DefaultClient(ctx, storage.DevstorageReadOnlyScope)
if err != nil {
return nil, err
}
service, err := storage.New(client)
if err != nil {
return nil, err
}
buckets, err := service.Buckets.List(projectID).Do()
if err != nil {
return nil, err
}
return buckets.Items, nil
}
func index(w http.ResponseWriter, r *http.Request) {
r.Header.Set("x-goog-project-id", "theIdProvidedByTheAPI")
bucket, err := ListBuckets(r,"myProject")
if err != nil {
fmt.Fprint(w,err.Error())
}
for i:=range bucket {
fmt.Fprint(w,bucket[i].Name)
}
fmt.Fprint(w,"\n","Finished.")
}
Et voici le fichier YAML:
application: myProject
version: alpha-001
runtime: go
api_version: go1
handlers:
- url:/
script: _go_app
Le message d'erreur est ni utile car elle ne fournit pas beaucoup d'informations utiles. Je ne peux pas comprendre ce qui me manque.
J'ai eu une situation similaire. Ce questionnement que j'ai posé avant peut aider. http://stackoverflow.com/questions/34447124/using-google-cloud-storage-with-golang-on-appengine –
J'ai déjà vu ce post, mais le code avec l'exemple de travail n'est plus disponible sur github. –