I'm trying to integrete with google adds using Go and gprc (using google's generated libraries)
I'm making a request to get a campaign but it always returns InvalidArgument, I'd tried almost anything
func getClient() *grpc.ClientConn {
token := oauth2.Token{
AccessToken: "MyAccessToken",
TokenType: "Bearer",
RefreshToken: "MyToken",
Expiry: time.Now(),
}
config := oauth2.Config{
ClientID: "MyClientID", ClientSecret: "MyClientSecret",
Endpoint: google.Endpoint,
Scopes: []string{"https://www.googleapis.com/auth/adwords"},
}
tokenSource := config.TokenSource(context.Background(), &token)
t, err := tokenSource.Token()
if err != nil {
fmt.Println(err)
return nil
}
perRPC := oauth.NewOauthAccess(t)
// TSL credentials
pool, err := x509.SystemCertPool()
if err != nil {
fmt.Println(err)
return nil
}
creds := credentials.NewClientTLSFromCert(pool, "")
// client init
connection, err := grpc.Dial(
"googleads.googleapis.com:443",
grpc.WithPerRPCCredentials(perRPC),
grpc.WithTransportCredentials(creds),
)
if err != nil {
fmt.Println(err)
return nil
}
return connection
}
func getCampaign() {
service := googleads.NewCampaignServiceClient(getClient())
// request
headers := make(metadata.MD)
headers["developer-token"] = []string{"my-developer-token"} header := grpc.CallOption(grpc.HeaderCallOption{HeaderAddr: &headers})
request := &googleads.GetCampaignRequest{ResourceName: "customers/1234567890/campaigns/123456789} // I faked the ids
// call
response, err := service.GetCampaign(context.Background(), request, header)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(response, err)
}