What?
This is an article explaining the code needed to write a PHP script which generates an access token for a service account which in turn is used to list files in a team's Google Drive.

This is very different to my code for OAuth when attended: Google Authentication - OAuth 2.0 using PHP/cURL... In that this one doesn't prompt for a user. Again this script doesn't need the client libraries, composer, vendor, etc.

Why?
This took me the best part of a month to get working. It is taken from Google's documentation as well as other forums and websites that try to explain it. Do not waste your time like I did on the public key, verifying a JWT signature, or including any third-party libraries. You can do it in pure PHP and all you need is the JSON key that you generated in your Google console.

Applies to:
  • Google Drive REST API v3
  • Google OAuth 2.0 v4
  • Google Cloud Platform IAM
  • Google Suite
  • PHP v5.6.35

How?
I'm going to go through each section of the code to go through the logic and highlight any changes you may need to make.

What?
A super quick article to show how to link to the thumbnail image of a Google Drive file, in this case a video file.

How?
The hardest part of this is to get the Google Drive File ID (which you need for the below). The image link (src) will be as below but then this is a redirect to the actual thumbnail stored by Google Drive:
copyraw
https://drive.google.com/thumbnail?authuser=0&sz=w320&id=<GOOGLE_DRIVE_FILE_ID>

// where <GOOGLE_DRIVE_FILE_ID> is the file id
  1.  https://drive.google.com/thumbnail?authuser=0&sz=w320&id=<GOOGLE_DRIVE_FILE_ID> 
  2.   
  3.  // where <GOOGLE_DRIVE_FILE_ID> is the file id 
Category: Google :: Article: 654

What?
This is an article which lists the functions necessary to process Google Authentication using OAuth2.0. These functions allow a script to simply be loaded and to either create a token file, or use the existing one as long as it hasn't expired.

Update 2019
This script requires a user to authenticate the google account. I have a newer article called Google Drive API v3 - OAuth2 using Service Account in PHP/JWT documenting a script which accesses a Google Drive using a Service Account (unattended).

Why?
This is a big cop-out as I simply took someone else's functions and upgraded them to use the mentioned token based authentication. I find myself going through the motion and designing on a per-app basis so I wanted a standard way of doing it and I'll update this article as I improve on the code.

How?

What?
So this is supposed to be a quick article detailing how I used a PHP function to upload a video file to Google Drive. Note that this example does not involve installing the Google Client Library for PHP. So no classes or built-in functions that you didn't write or know what they're doing.

Why?
The objective here is to upload a video file to my Google Drive. This assumes you have already "Enabled the Drive API" via your Google Developers console as well as gotten your OAuth 2.0 access/refresh tokens and specified the appropriate scopes.

The scopes I chose were to do with getting a working example rather than the recommended scope, though you may only need the first (untested):
copyraw
https://www.googleapis.com/auth/drive.file
https://www.googleapis.com/auth/userinfo.email
https://www.googleapis.com/auth/userinfo.profile
  1.  https://www.googleapis.com/auth/drive.file 
  2.  https://www.googleapis.com/auth/userinfo.email 
  3.  https://www.googleapis.com/auth/userinfo.profile 

How?
I've listed below 3 methods, the first follows the manual (or the logic thereof as I don't use the client library) and is a function sending two requests, the second is the appropriate multipart function which uploads and names the file in a single request, and the third is a 'nice-to-have' upload to the specified folder.
Category: Google :: Article: 649

What?
A reference to what size an image background should be set to for various screen sizes.

Why?
A background image I was using was unedited at 1600x2133 (364kb) and was not displaying on smaller devices. Configuring drawables for each layout seemed to be the only solution.

copyraw
res/drawable-ldpi      240x320
res/drawable-mdpi      320x480
res/drawable-hdpi      480x800
res/drawable-xhdpi     640x960
res/drawable-xxhdpi    960x1440
res/drawable-xxxhdpi   // for launcher only 640dpi
res/drawable-tvdpi     1.33*mdpi // not needed as mdpi or hdpi is used
  1.  res/drawable-ldpi      240x320 
  2.  res/drawable-mdpi      320x480 
  3.  res/drawable-hdpi      480x800 
  4.  res/drawable-xhdpi     640x960 
  5.  res/drawable-xxhdpi    960x1440 
  6.  res/drawable-xxxhdpi   // for launcher only 640dpi 
  7.  res/drawable-tvdpi     1.33*mdpi // not needed as mdpi or hdpi is used 

Category: AndroidOS :: Article: 598

Applies to:
  • Android Studio (Beta) 0.8.9
  • Android Google Maps v2

What?
A sequel to my article "Basic Android App using Google Maps and Current Location", this article suggests how to add Map as a sub activity. Note that this article is based on a new blank project which does not include code from the previous example but you can still build this over the previous example (as I did).

Why?
The previous article meant that the Google map was your main activity and any other activity would be a sub-activity; returning to the map activity would restart the app as a menu item, it would need to launch a new intent... I wanted to change my previous example so that the homepage of the app (the starting page) will simply display a button to the map (in case of offline mode or incompatibility with the device).

How?
In this example, I'm going to add the map as a fragment. This is the most rudimentary example (display map, move camera and display marker) and can be run from any other activity:

What?
A quick article on how to replace the return key on a soft keyboard (software based) on a touch-device.

Why?
I have an editText where a user can enter any text value but if they typed a return character, the app would crash because it didn't understand the data. I tried replacing the new lines but just stopping the return key or trying to catch it is an obsolete method.

How?

Applies To:
  • Microsoft Windows 7 Pro
  • Android Studio v0.8.6 beta
  • Java Development Kit v1.8.0_20

What?
The article below serves as a checklist to ensure I don't release an app that only displays maps to myself (again).

Why?
This took me a while to figure out so hopefully this will help others.

How?
The gist is that I was using the Test SHA1 when adding allowed Android Keys to the Google APIs console (there's so many) when I should be using the App SHA1 (I have now added both to the console).

What?
A quick article on how to remove the first two entries from a RSS feed produced by a bunch of java files collectively known as "SimpleRssReader.

Why?
The original file reads of a feed from PCWorld.com. I adapted this to read a google news rss feed and the first two entries are "<query> - Google News", everytime. This article documents what I did to fix it.

How?
Basic to some but I'm new to the game. I'm trying to remove the first two entries from a news feed from a Google News feed.

What?
If you're installing an app and it creates two icons:

Why?
I don't think I'll forget this one but I was stumped for a bit until I found it on the a forum: Stack Overflow: Android App Development.

How?
Basically don't have the following declared more than once in the AndroidManifest.xml
copyraw
<intent-filter>
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
  1.  <intent-filter> 
  2.       <action android:name="android.intent.action.MAIN" /> 
  3.       <category android:name="android.intent.category.LAUNCHER" /> 
  4.  </intent-filter> 

Category: AndroidOS :: Article: 587

Credit where Credit is Due:


Feel free to copy, redistribute and share this information. All that we ask is that you attribute credit and possibly even a link back to this website as it really helps in our search engine rankings.

Disclaimer: Please note that the information provided on this website is intended for informational purposes only and does not represent a warranty. The opinions expressed are those of the author only. We recommend testing any solutions in a development environment before implementing them in production. The articles are based on our good faith efforts and were current at the time of writing, reflecting our practical experience in a commercial setting.

Thank you for visiting and, as always, we hope this website was of some use to you!

Kind Regards,

Joel Lipman
www.joellipman.com

RSS Feed

Related Articles

Joes Revolver Map

Joes Word Cloud

using   script   time   client   form   create   files   data   note   uploaded   first   case   error   file   value   system   field   date   need   database   order   mysql   server   would   list   windows   find   where   used   following   user   page   zoho   joomla   parameter   record   creator   deluge   code   license   report   display   function   website   added   source   name   version   work   table   JoelLipman.Com

Accreditation

Badge - Certified Zoho Creator Associate
Badge - Certified Zoho Creator Associate

Donate & Support

If you like my content, and would like to support this sharing site, feel free to donate using a method below:

Paypal:
Donate to Joel Lipman via PayPal

Bitcoin:
Donate to Joel Lipman with Bitcoin bc1qf6elrdxc968h0k673l2djc9wrpazhqtxw8qqp4

Ethereum:
Donate to Joel Lipman with Ethereum 0xb038962F3809b425D661EF5D22294Cf45E02FebF
© 2024 Joel Lipman .com. All Rights Reserved.