I am using Google API I try to insert moments but I get error: Google.GoogleApiException was unhandled Message=An Error occurred, but the error response could not be
What you need to do is either set the target URL or set the other metadata inside of the moment body. If you are setting both, you will get an error. The following code should work:
ItemScope target = new ItemScope();
// target.Id = "replacewithuniqueforaddtarget"; // This is optional.
target.Url = "https://developers.google.com/+/web/snippet/examples/widget";
Moment body = new Moment();
body.Target = target;
body.Type = "http://schemas.google.com/AddActivity";
MomentsResource.InsertRequest insert =
new MomentsResource.InsertRequest(service, body, "me",
MomentsResource.Collection.Vault);
Moment wrote = insert.Execute();
Or the following code:
ItemScope target = new ItemScope();
target.Id = "replacewithuniqueforaddtarget"; // Optional
target.Image = "http://www.google.com/s2/static/images/GoogleyEyes.png";
target.Type = "http://schemas.google.com/AddActivity";
target.Description = "The description for the activity";
target.Name = "An example of add activity";
Moment body = new Moment();
body.Target = target;
body.Type = "http://schemas.google.com/AddActivity";
MomentsResource.InsertRequest insert =
new MomentsResource.InsertRequest(service, body, "me",
MomentsResource.Collection.Vault);
Moment wrote = insert.Execute();
I just tested the above code with the 1.4 library, this should work in either case.
It's possible that you are not creating a Google+ service client but instead are just creating the Tasks service client and trying to use that. The following boilerplate is a full example that constructs a Google+ service and writes a moment:
// Register the authenticator and construct the Plus service
// for performing API calls on behalf of the user.
_authState = YOUR_AUTHSTATE_OBJECT;
AuthorizationServerDescription description =
GoogleAuthenticationServer.Description;
var provider = new WebServerClient(description);
provider.ClientIdentifier = CLIENT_ID;
provider.ClientSecret = CLIENT_SECRET;
var authenticator =
new OAuth2Authenticator<WebServerClient>(
provider,
GetAuthorization)
{
NoCaching = true
};
ps = new PlusService(new BaseClientService.Initializer()
{
Authenticator = authenticator
});
Moment body = new Moment();
body.Target = target;
body.Type = "http://schemas.google.com/AddActivity";
MomentsResource.InsertRequest insert =
new MomentsResource.InsertRequest(ps, body, "me",
MomentsResource.Collection.Vault);
Moment wrote = insert.Execute();