Google Calendar API: Add attendee via service account not working - api

i try to add attendes to a google-calendar-event.
If i log in via my personal account (OAuth2), everything works.
But if i try to do this via a service-account, i got the error:
{
"code": 403,
"errors": [
{
"domain": "usageLimits",
"reason": "quotaExceeded",
"message": "Calendar usage limits exceeded."
}
]
}
I found a blog, where someone wrote, that you need quota to add attendees
and service-accounts dont't have any quota. This should be the issue.
But this is no solution for me, because i want to add some attendees by a
server-to-server-request. It's only about 2-5 attendees and only one or two
times a day.
Is there any other way to add attendees by a server-to-server-request?
Best regards,
alex

The reason is general issue when creating calendar events with attendees using a service account, see here.
Right now the best workaround would be letting the service account impersonate a user, so it looks like it was the user and not the service account who created this event.

Related

How do I redeem a domain with GoDaddy's API?

I have a subaccount that has a domain in the "redemption" state after it expired, and I would like to "redeem" it so I can renew it. From looking in the API docs, it is only available in the v2 API, and I was able to get started in the v2 API with some help. However, even with the correct UUIDv4 customer ID for the domain, I get the error: { "code": "ERROR_INTERNAL", "message": "Internal Server Error"}
The POST body is not labelled as required in the docs, but it is required. To get details on each of the fields, you need to click on the button (which is easy to miss) that switches between "Example Value" and "Model" (screenshot)

People API: FBS quota limit exceeded

While syncing contacts using the People API, I've run into a quota limit error which I don't understand and haven't found any information about it on the net. The error is the following:
"error": {
"code": 429,
"message": "Resource has been exhausted (e.g. check quota).",
"status": "RESOURCE_EXHAUSTED",
"details": [
{
"#type": "type.googleapis.com/google.rpc.QuotaFailure",
"violations": [
{
"subject": "QUOTA_EXCEEDED",
"description": "FBS quota limit exceeded."
}
]
}
]
Does anyone have any idea what this error is related to ?
Thanks
I have decided to create an answer from my comment, for future reference.
The error 429 indicates that you maybe violating the google's terms of service (especially under d. API Limitations). To quote it:
d. API Limitations
Google sets and enforces limits on your use of the APIs (e.g. limiting
the number of API requests that you may make or the number of users
you may serve), in our sole discretion. You agree to, and will not
attempt to circumvent, such limitations documented with each API. If
you would like to use any API beyond these limits, you must obtain
Google's express consent (and Google may decline such request or
condition acceptance on your agreement to additional terms and/or
charges for that use). To seek such approval, contact the relevant
Google API team for information (e.g. by using the Google developers
console).
When you made too many calls you were probably put on a blacklist, which expires in some time. The limit for People API. You need to apply for higher quotas.
For example, Google Play Developer API has a 200 000 calls per day, you have to request if you need more.
The google probably wants you to have a good reason to have more and also is protecting from the DDOS attacks.

Webhook for hosted event?

I have a webhook subscribed to Page feed events.
I want it to tell me when a public event has been created on the page OR a page the user manages.
The app dashboard tells me this is the JSON object that will get sent to me:
{
"field": "feed",
"value": {
"item": "status",
"post_id": "44444444_444444444",
"verb": "add",
"published": 1,
"created_time": 1536110879,
"message": "Example post content.",
"from": {
"name": "Test Page",
"id": "1067280970047460"
}
}
}
Is the event id delivered in the post_id field?
If not, how is it passed to me?
How can I test this further?
Is my only choice to create events by hand, record the event id and fill it in as the returned post_id?
Can this webhook receive notification from multiple user's pages?
If so, how do I configure it to do so?
If not, how do I do something like that? Do I need multiple webhooks?
As per relevant webhooks doc reference https://developers.facebook.com/docs/graph-api/webhooks/reference/page/#feed
event_id is not delivered in the post_id.
event_id is passed inside value as event_id, you may need to check you app, seems like event_id is being filtered out in the response.
Testing it further is a broad query, although you could use curl to perform testing with the configured FB account.
In a more generic context, the above webhook response can be used to autogenerate/handle the post, that is the core purpose of the existence of the webhooks(to trigger and automate events as and when occurred).
No, this webhook is page specific.
You need to configure the webhook for each page separately. (Find the page_ids that can be used to work with other pages corresponding to the user)
The same webhook shall work, although the only difference shall be the page parameter, so you would have to configure another set of webhooks for each page, with a unique page_id related to that user account.
Note: Refer to https://developers.facebook.com/docs/graph-api/webhooks/getting-started for testing the webhooks.

How to require google account with google+ upgrade? UserRegistrationIncomplete error

I am trying to use google play games services for web.
gapi.load('auth2', function() {
GA = gapi.auth2.init({
client_id: "...",
scope: "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/games"});
});
I have two account, one with google+ and one without.
I can signin with both.
GA.signIn()
But when I try to submit score
gapi.client.games.scores.submit
The account without google+ returns error
{
"error": {
"errors": [
{
"domain": "global",
"reason": "UserRegistrationIncomplete",
"message": "User has not completed registration."
}
],
"code": 401,
"message": "User has not completed registration."
}
}
I guess it means Account needs a google+ upgrade.
So, how can I require this when user signIn?
Or maybe there is another solution?
Actually, Google+ is no longer used by Play Game Services. Starting last year, "Games Lite" was rolled out which makes players create a profile that is not publicly linked to their identity. This was done to reduce the amount of friction created by having the player accept a permission consent before playing the game. More info: https://android-developers.googleblog.com/2016/01/play-games-permissions-are-changing-in.html
Unfortunately, the profile creation is Android only, so if the player has not signed into a game on Android, they will not have a profile and you will get this error.

Not able to get User Transaction details from Yodlee API

I'm using the http://developer.yodlee.com/TestDrive developer Test API module and using one of the 5 dummy accounts provided by Yodlee, For a particular user I have managed to add a dummy DAG bank account and one real bank account which is visible in getAllSiteAccounts details Api so its obvious that site have been added.
But while using the getUserTransactions API I'm getting error
{
"errorOccurred": "true",
"exceptionType": "com.yodlee.core.transactionsearch.exceptions.InvalidSearchIdentifierException",
"referenceCode": "_567afa0b-9d5a-4fb4-9db1-afd4f43c39c2",
"message": "Invalid argument value: com.yodlee.core.transactionsearch.TransactionSearchIdentifier#2ad082d0"
}
I also tried using the executeUserSearchRequest still didn't get any transaction details
{
"searchIdentifier": {},
"numberOfHits": 0
}
Can you please guide me If I'm using the API's correctly ?
You should use executeUserSearchRequest API to get the transactions. You should check the date range you have provided while searching for transactions and also try to remove itemAccountId.identifier and then search, you should get the transactions.
I'm having the same issue the only difference though is that I don't have any issues on DAG accounts, but when I used our production account I can't get the user transactions. I was reading this post Get all user transactions with executeUserSearchRequest and I guess the solution is to make sure that your server/code have the same timezone configuration.