Overly broad permission ask for google youtube API - google-api

I'm using the YouTube API to create a webpage that allows users to view a specific set of YouTube videos, and then LIKE those videos, using YouTube like/dislike rating system, and It's working fine, but when the user triggers the process, after logging into their google account, they are presented with a permission dialog that basically says
"Hey, this site wants complete and total control over your YouTube account!".
I DO NOT want that, I only want the user to be able to rate the videos.
I'm using the PHP Client library to pull the list of videos into the page and display them, and this requires no permissions or interaction from the user. I am also using the JS library to handle the "like" functionality, and it's basically the javascript example from https://developers.google.com/youtube/v3/docs/videos/rate?apix=true, but with my credentials.
Can I change this somewhere, or does YouTube just lump all of it's permissions under one giant "I can do anything" permission group?

I figured it out. It's about the OAuth 2 scopes, which the example lets you change for the DEMO, but it doesn't actually change the code in the sample.
For reference, the list of scopes is here: https://developers.google.com/identity/protocols/googlescopes#youtubev3

Related

Lookup user's YouTube Account with Google Id

I need to locate the user's YouTube account/channel Google user Id.
A Google Search on find YouTube channel from google id yields several StackeOverflow possible options, some use the Google+ API which has been deprecated, but I'm sure there are alternatives using the Google Identity API or some other Google API.
Can anyone give me idea or a solution about how can I convert Google Account Id to YouTube Channel Id Account?
You need to remember that YouTube and google where originally two different companies there is probably no direct link that you are going to be able to hack your way to.
This is partly why (IMO) YouTube login is channel based. A user can have more then one channel so your not going to be able to find a single channel for a user relation its going to be a one to many relation. I dont think google has any way for you to see this without having the user login.
Your best option will be to ask the user to sign in and then use channels.list with the option mine.

Google Play Console API

Issue: My clients need to access app information, such as installs, uninstalls, and respond app user comments.
They access the Google Play Console to manage the information above, but are computer laymen, and with access to the Google Play Console they can run undesirable settings or even remove the app from the Google Play Console.
Solution: Create a web portal for them to view only specific information (Installations, Uninstallations and responding to end user comments from the app).
Doubt: What API will the portal that I'm going to develop need to consume to display the information (Installs, Uninstallations and answer End User Comments)?
Annex draft of the project.
Why don't you just use user permissions in the Play console to prevent them from doing anything undesirable? You can give users read only access, and even per-app access.
Then you don't have to write any code at all.
As i understand it, your portal will mainly need two things :
The reviews sent by users via Google Play Store
The Google Play Console reports
Then, you will have to do the job yourself, create some kind of blog where end-users can posts reviews, and other users can comment it. You will also need to retrieve the reviews posted via Google Play Store, and use this data to automatically post a new review on your portal. The Reply to Reviews API can help you to retrieve such reviews, in a formated output (Json).
The install and uninstall are available thanks to Google Play Console reports, stored in a private Google Cloud Storage bucket. There are a few ways to download these reports, but i guess you want get them programmatically in order to automate the process. You will need gsutil to achieve this task. I understood gsutil gives you CSV files, witch can be parsed pretty easily, in order to isolate ans send the informations you need to your portal.

Extending YouTube API Quota with limited funds

With a simple java program, I send GET requests using YouTube Data API specifically videos.list, in order to get the public metadata of a video and store it as .json files.
For my universities research, we have to do this with all available YouTube video IDs provided in the Youtube-8M Database.
Therefore, I would like to know if there is a way to extend the available quota for requests (I already know about the billing option, but I am a student and my university is small).
I have read the YouTube API terms, which states that only one project per client may be used to send such requests with the necessary API Key.
If I understand it correctly, even my simple java code is such a client.
In some other Stack Overflow questions about extending ones daily quota with API Keys, some suggested creating multiple accounts or projects.
Is this a legal option or not? Or is there another possibility to get a higher quota for simple requests used in research like I do right now?
If you go to the Google Developer console where you enabled the YouTube API. the second tab is called quota
Click the pencil next to which ever quota it is that you are blowing out. A new window will pop up with a link called apply for higher quota.
Fill out the form to apply. To my knowledge you do not have to pay for additional YouTube quota but it can take time to get approved. Make sure you comply with everything on the form.
I have never heard of the one project per client term. Technically you can run your application using different API Keys it should work fine. Technically there is nothing wrong with creating additional projects on Google Developer console. You don't need to go as far as creating another Google account.

Share private video to some google accounts through API

I'm trying to figure out wheter it is possible to have a private video on youtube that I could share with particular Google Accounts through API.
I would have a separate web application that would have a Google signup and after signup I would enable that Google Account to watch my private video.
Ideally I would also want to embed the video to the web application (but I think I can do this rather easily if I'm an owner of the video).
Ispossible to have a private video on YouTube that I could share with particular google accounts through API.
No you cant directly share a video with another user like you could a file on google drive.
You could show the video on your own site, but I am not sure its something I would want to try. The thing is being that its a private video you and you alone have access to see it. Your going to have to authenticate your application and get a refresh token back which will allow you to access the account and the videos on the account.
Then you will be able to use that refresh token to get an access token to show other people the video via your website. The problem you will have is if the refresh token stops working (rarely happens but can happen) you will have to authenticate it again before your solution will work.
Note: Service accounts don't work with YouTube API. So don't bother going down that road.
If you know the ID of a video, you can access it. You can share the ID,or an embedded link with someone.
The api only hides the info, not blocks it. So you would need to hold the info elsewhere for referencing.
So as long as you know the id's of the related video's, you can do what you want with them.
However, if you are wanting to monetise them on the side, I would recommend against it. Best to read the user agreement you have with YouTube.

twitter card image from external website

I have a twitter share button on a webpage. I have submitted my website for twitter cards, and it is approved. I am using the twitter card tags correctly, but I have troubles to get the images appear on the time-line. On the twitter timeline I only see text and the URL. Only when clicking on the tweet, an image appears below (the tweet expands).
I would like to have this image appear on the timeline, without needing to expand the tweet. Is this possible, or am is it necessary to use a service like twitpic or flickr to make this happen?
My first thought is that this is not possible because twitter only accepts certain image websites to publish their images on the twitter timeline, but I cannot find a twitter dev source that confirms this.
This is the normal behaviour for the twitter card.
Please read https://dev.twitter.com/cards/troubleshooting#timeline
The second point of the troubleshooting might be the solution you're looking for: "For photos and animated GIFs, upload the media directly with the Tweet or consider using the Twitter API to upload media." You can also explore the other solutions offered.
UPDATE: It looks like the solution I was proposing refers to sharing content directly from twitter, so it's not an option. See this twitter community thread

Resources