all. I have a situation where I need to pull dates for events from a specific calendar from google. Since this is my calendar I don't need anything from anyone. I have created a service account but got stuck how to get authenticated with it using PHP cURl, would appreciate any help!
At the moment I have:
service account (owner)
json file with keys
calendar shared with this acc
calendar id
*I don't see a point to install full google PHP API library for just this task
Google API support OAuth2 authentication. You can use curl with --oauth2-bearer and the token you'll get from your service account on its account page (you have to go to the API console of the account, check the links below).
For PHP cURL, it's the CURLOPT_XOAUTH2_BEARER option, require cURL 7.33 at least. You have to set this with curl_setopt.
Here's the Google modus operandi for the account and the assitant for that.
Related
I am doing a custom google map with API
I put the URL link :
https://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=600x300&maptype=roadmap&markers=color:blue|label:S|40.702147,-74.015794&markers=color:green|label:G|40.711614,-74.012318&markers=color:red|label:C|40.718217,-73.998284&key=AIzaSyCTFUKmdIRSSod5v1oqhIXJOmkOPMsdFp0
I received this error:
The Google Maps Platform server rejected your request. This API project is not authorized to use this API. Please ensure this API is activated in the Google Developers Console: https://console.developers.google.com/apis/api/static_maps_backend?project=_
I enabled API AND THE error still exist
Can you please help me find the solituion for my problem
In order to use the Google maps api your going to have to first off enable the maps api in the Google developer console for that project. Then you will need to enable billing for the project as there is no longer a free tear for maps api.
Once you have done that you can create an api key and use it in your code.
The Google Maps Platform server rejected your request. This API project is not authorized to use this API. Please ensure this API is activated in the Google Developers Console: https://console.developers.google.com/apis/api/static_maps_backend?project=_
This message means that you have not enabled the maps api for your project. It can take a few minutes before it kicks in if you just enabled it. Make sure you have done it for the cogrect project as well by clicking on the link that it showed you.
You are going to need maps javascript API for a real map and embed it in a div
Here is a basic example on how to achieve that.
In the script tag in the html section you need to replace YOUR_API_KEY for the real one from google.
jsbin example
https://jsbin.com/xiragigegi/edit?html,css,js,output
I am not familiar with the GA API, and a developer (he is not available at this time) is requesting the below data for a connection to my Google Analytics account.
Can you point me in the right direction to locate or generate this data?
Client ID
Client Secret
Token
Refresh Token
I thought the Token was generated after the connection, so it would not be something I provide.
Thanks for any pointers.
As dikesh has referenced, the developer site has tons of useful info.
To add on, here is a concise guide to get what you have asked.
- Client ID and Client Secret
- visit google developer console (https://console.developers.google.com/home)
- create a new project (look top right side)
- enable Analytics API (search for "analtyics api" on overview page)
- create credentials (look left hand side)
- follow the appropriate steps to create your client and secret file (simple and straightforward)
Token
you are absolutely correct, at least with the way I understand the concept and have implemented using service account. Essentially, after you request for a service object with a call such as service = build(api_name, api_version, http=http), an access token is granted under the name 'service'. And with this token, we can make management API calls. E.g., account_summaries = service.management().accountSummaries().list().execute()
Hope that helps!
Have him check out this tutorial on how to use Python to pull data from the Google Analytics API. Step #4 describes and has a video on how to create a new Google Analytics API project in the developer console.
I'm trying to implement Google analytics API using API key to make it available without authorization. But i can get examples using CLIENT ID in google developer console itself. Can anyone help me with an example using api key?
It is not possible to access Google Analytics API with the API key. You must use Open Authentication.
If you are trying to access your own data you can use a service account. Create new credentials choose Service Account.
You can then take the service account email address:
1046123799103-nk421gjc2v8mlr2qnmmqaak04ntb1dbp#developer.gserviceaccount.com
Add it as a user at the ACCOUNT level it is very important that it be at the ACCOUNT level it wont work other wise. Your application with then be able to access your Google Analytics data with out a log in.
Without knowing what language you are working with I cant give you any examples.
Update:
If as you say you are planning on doing this with JavaScript then you will have to go with Oauth2 and request access. There is no way to use a Service account with JavaScript.
There for I strongly recommend that you find a server sided programing language to do this in. Even if it did work with JavaScript you would end up running out of quota on the API before to long.
Google Analytics' EmbedAPI will allow you to display your Google Analytics via javascript, and users will be able to log in on page.
You will still need to get your clientAPI, but then users will be able to login independently.
The javascript code is described in the dev guide and a sample is below:
<script>
gapi.analytics.ready(function() {
// Step 3: Authorize the user.
var CLIENT_ID = 'Insert your client ID here';
gapi.analytics.auth.authorize({
container: 'auth-button',
clientid: CLIENT_ID,
});
</script>
The API limit should be no problem, its 50,000 calls per day.
My application needs to fetch Google Analytics data from backend servers.
I am using Google Service Account in my application.
Though I have given all permissions to my service account through Google Developer console, it turns out that my service account cannot access custom segments of my user account.
A way could have been to copy these segments from user account to service account, but there seems like no way to login via service account and be able to copy segments from user account to service account.
So, there seems like no way to be able to fetch custom segments in a web application from backend...
Is there any way to do so?
Can any other account(web application, Installed application account) serve my purpose?
Reading the documentation of above two Google accounts reveals that user would be prompted for authentication (at least once) during authorization in these 2 accounts which is not feasible in backend servers.
I found a similar thread for my query Google Analytics V3 - How to create custom segments for API Service Accounts , but user in this thread resorted to not using segments at all, but I do need to use them in my account.
PS: I am writing my application in RubyOnRails and would be using Ruby Gem for Google Authentication
Answer: No there is no way to add segments to the Service account. Even the Mangment api only allows you to list segments not add them. Segment Management API documentation
An Idea: You could us normal Oauth2 Authenticate it using your account, Save the refresh token someplace and use that in your application to see the data. Then it would be like the Application is always you and would be able to see your segments.
Sorry I don't know ruby so I cant help you with getting the idea working.
I need to write to a Google Calendar from data in our datastore (App Engine app).
I want to access via OAuth 2.
Reading is no problem - the calendar is public and I just use the simple API access method.
Writing is a "problem" - obviously I need to authenticate. However, the calendar is owned by the app administrators, and we want to write to the calendar as a background task - no user interaction is required.
I have gone through all Google's documentation, but I feel none the wiser - how can I do a one -time setup for permanent write access to a Google Calendar, via the V3 API?
To make calls on behalf of your App Engine app without user interaction you should make use of the App Identity module:
https://developers.google.com/appengine/docs/python/appidentity/
If you are using the Google API Client Libraries, using the AppAssertionCredentials object will do this automatically for you:
https://developers.google.com/api-client-library/python/guide/google_app_engine#ServiceAccounts
Note the following:
You will probably still need to supply the simple key in order to attribute quota usage to the right project.
The App Identity module won't work during local App Engine development - you will need to deploy into production in order to obtain valid credentials.
You will need to share the calendar you are writing to with the email address associated with the service account for the App Engine app. To find this email address go to the App Engine Administration Console -> "Application settings" and look for the service account email.
Finally, I'm not 100% sure that the Calendar API allows service accounts direct access, but you should give this a try. If that doesn't work for you an alternative may be to generate a refresh token for a real user that has access to the calendar, and look at embedding that into your application - the service account method is preferable, so I would try that first.