I just want to request my viewCount, subscriberCount and videoCount. All these three things are listed when I open this url in my browser.
I am working with JavaScript. All I want to do now is save this three variables and display them on my website. No authentication is needed.
I tried a lot of code examples but it never worked. I have no idea how this works. Please help me!
if you look in the reason of the invalid request it tells you that a key is needed.
In fact, as almost all the google API services nowadays, you need to register your application and get an API key that will replace the value of the parameter key in your url (Now it is set as a demonstration as key=MY_API_KEY).
Here is the link for the guide to app google registration.
Hope this answer can be useful to you.
I'm using Outlook Web Add-in. I need a way to send an email automatically. Something similar to this:
var item = Office.context.mailbox.item;
item.displayReplyAllForm("Default Message");
but without showing the Reply Form. I need to send a message directly and
maybe only show a message like "replying... please wait" or something similar when I click the button.
How I can do that? Please help and thanks a lot.
You cannot do this from the JavaScript library directly. You would need to use Microsoft Graph API to handle sending the message. You can find instruction on how to do this in the documentation under Use the Outlook REST APIs from an Outlook add-in.
There are couple of solution one is with graph and another is with exchange api. For graph you need to little bit of extra work to get the token and auth flow working.
The other approach is to use exchange API, you don't need to do anything to do these calls you already have the authentication setup needed for you in dong this call.
Please see this documentation for the more details.
https://msdn.microsoft.com/en-us/library/office/dd633704(v=exchg.80).aspx
https://learn.microsoft.com/en-us/outlook/add-ins/web-services
If you want a client only solution you can directly call the Office.context.mailbox.makeEwsRequestAsync API (refer documentation here: https://dev.office.com/reference/add-ins/outlook/1.5/Office.context.mailbox?product=outlook)
To construct the soap request to be used in makeEWSRequest, you can use: https://msdn.microsoft.com/en-us/library/office/dn600292%28v=exchg.150%29.aspx?f=255&MSPPError=-2147217396
Note that makeEWSRequest is not supported in mobile clients.
You should ideally request for a graph token using getCallbackTokenAsync API and then use the graph APIs with the token to send the email. This should work on all clients and is a preferred way to accomplish this scenario.
I have a gaming page that accesses an API that I would like to share but I don't want anyone else using my api. Is there a way to create a variable in javascript that would obfuscate the api? Maybe pull it in from a php page?
Just looking to replace
var apiKey = "7**************";
so that the api isn't available to people that download the page to use it for themselves.
No. You cant hide anything in javascript.
No. It's not possible.
Any information that your javascript uses, is public. Any API key that you put in js or pull from server or decode or whatever else can be easily recorded and then used elsewhere.
Create nginx proxy which will just add your secret API key when you make calls to API. But dont share API keys - the only security in this case is lazyness ot your visitors to take that API key.
You can't hide Javascript from your source but you can made it more difficulty to read and understand.
www.sitepoint.com/hide-jquery-source-code/
Image from sitepoint
Javascript Obfuscate
Google analytics tracks pageviews.
I would like to use JavaScript to fetch the number of views that a specific page URL has.
How can I do this?
P.S. Google documentation is a mess, all I can find out from it is how to setup tracking.
Doing this purly in javascript is going to be tricky. Due to the fact that you will need authorization to access your data.
Now normaly for a case like this I would say use a service account but in order to use a service account to connect to google analytics, you will need to download a key file. This file must be kept save and secure.
Javascript is client side scripting how can you send a file that no one else should be allowed to access? As far as I know there are no javascript examples for using a service account to access google analtyics i have also been unable to come up with a safe and secure way of doing this myself. If any one has any ideas please comment i would love to hear how you got this working.
The only other option is to go with normal autentication the problem with this is that you will need to autenticate the script. Thats not hard you could then save the RefreshToken some place and pass it to the page. Again this is a problem anyone that then looks at your source code will have the RefreshToken and the ability to access your data.
My recomendation: Use some server sided scripting language like php for example.
If you want to look at the code for doing this in javascript Hello-analytics-api
In my site I have:
...
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
...
The script above is the Google script to load up other resources dynamically.
(eg Google charts API)
This works 99.99% of the time.
However, I just got a client that for some reasons got his company restricting access to google.com.
As a consequence of this my website simply threw a JavaScript error.
Now I know how to handle that, and I can check if window.Google exists.
but my question is
"what's the standard way to deal with this? "
In other words if you embed 3rd party JavaScript how best do you deal with their JS not available?
NOTE: VERY IMPORTANT
You can not host the chart code locally or on an intranet.
SEE FAQ from Google: https://developers.google.com/chart/interactive/faq#localdownload
Can I download and host the chart code locally, or on an intranet?
Sorry; our terms of service do not allow you to download and save or
host the Google.load or Google.visualization code.
There is no real alternative. Due to Google's terms of service you cannot use Google API without access to google.com.
Check the connection to Google and iform user that function is not available
Develop your own or use non-google api. Still you can use Google if available
The solution is that your client's company review their content filtering policies. Google are quite clear in their previous answer concerning offline access:
…your computer must have live access to http://www.google.com/jsapi in order to use charts.
You are using a third-party solution according to their terms and conditions, which naturally imposes limits on how that solution may be used by your clients. You need to stand firm or find a more liberally-licensed solution. (At any rate, you are more likely to succeed at convincing your client's IT department than petitioning Google to change their TOS.)
For the more general case of third party JS APIs that may not load but for which you are allowed to keep a local copy on your server, see this question.
You can try it like this:
Instead of using the direct link to the Google libraries you want to use, use a link which points to your server:
<script type="text/javascript" src="https://www.myserver.com/jsapi"></script>
When your server gets an incoming request to this URL, your server now makes a request to Google to get the API and sends the response to the client.
That means you do not install the API anywhere locally or on a server and always get the most actual version directly from Google. People also do not need access to Google (as in the company you mentioned) and therefore can use your service.
Use Firebug or the Chrome Dev Tools to inspect your HTML source once the charts scripts are loaded. Access the scripts in your browser and save them locally, then serve them from your own server. This isn't recommended, of course, but if you don't have any other choice...
For example, checking the code of one of the pages I use it on, the core script for the Google Charts library is located at:
https://www.google.com/uds/api/visualization/1.0/3d781368978b51b3ca00a01566dccf40/format+en,default,corechart.I.js
Use the javascript window.onload to check whether the api has loaded or not, if no then load it from your server.
You already know how to check whether or not your library has been loaded (checking the object), if it fails, than what you can do within giving constrains:
Keep checking the object with timer and trying to download library, displaying message for a user
In case first one fails, you have two ways again:
Stopping your application and displaying an error: "Application error... try later"
Or downloading different library as a fallback
Are you progressively enhancing or gracefully degrading the page? If so, what do you display to users without JavaScript for this chart? A table? A list? This is what you should leave in the page and only start changing it once google's JS is available. Either that, or find an alternative library like raphaeljs that lets you keep all your code within your project.
IF (BIG IF) you are not worried about the interactivity the Google Charts and want to display them to the user just to see - maybe add your own javascript to it but not depend on the Google Javascript at all, this can turn the google charts into a image that you can display to the user.
Also this requires access to install a command line tool on the server.
http://code.google.com/p/wkhtmltopdf/ is a command line tool that will generate an image from an html page. If you build a simple page that only shows the chart you want and point the wkhtmltoimage tool at the local html file it will load the Google Charts javascript and generate the chart then generate an image out of the results.
YES I understand this is VERY kludgy and is adding a big tool for a small problem but with the browser restriction and the Google Terms of Service this will solve most of the problem.
You can try going straight to google and if it fails (if google is restricted) you can bounce the request off of your server which forwards the request using CURL to google. If that doesn't work then Google is most likely down. This should cover the issue that you described in your question, but there isn't really a fix for if google itself actually goes down. It should, however, give your application access around domain restrictions because the request will be routed to your server rather than straight to google. I use this architecture for all requests so that I don't have ajax requests routed to random servers. It allows me to control what interacts with my front end using my backend. There are other benefits to this, especially if you are using something like AngularJS with NodeJS because you can decouple a lot of your third party libraries. This however, is beyond the scope of your question!
Basically, it works like this (pseudo code):
If(!Browser->Google->Browser){
return Browser->MyServer->Google->MyServer->Browser;
}
An answer has been accepted already, but still I would like to leave an additional aspect elaborating on the comment I made above ....
It has been accepted that the Google Server is the only place from where the API can be loaded. We don't know whether the client's IT manager will re-think their content policy, they might have good reasons for that.
Given a non-100% availability of all the components along the path between a user browser and the Google API, sooner or later a user will end up in an error situation; statistically this is unavoidable.
What is not acceptable (and avoidable) for a user is to receive an "unspecific" JS error making him/her believe there's a bug on the page. So my solution would be to trap the failure loading the Google API and display a message "Third party components temporarily unavailable - Please try later".
This will demonstrate to the user that
we know what's going on
there's nothing we can do about it now
but it's not totally unexpected and still somehow under control