Skip to content

Instantly share code, notes, and snippets.

@kgleong
kgleong / GoogleDriveUploadFile.swift
Last active May 31, 2023 13:19
Google Drive - Upload File
func uploadFile(
name: String,
folderID: String,
fileURL: URL,
mimeType: String,
service: GTLRDriveService) {
let file = GTLRDrive_File()
file.name = name
file.parents = [folderID]
@kgleong
kgleong / GoogleDriveCreateFolder.swift
Created January 19, 2019 18:01
Google Drive - Create a folder
func createFolder(
name: String,
service: GTLRDriveService,
completion: @escaping (String) -> Void) {
let folder = GTLRDrive_File()
folder.mimeType = "application/vnd.google-apps.folder"
folder.name = name
// Google Drive folders are files with a special MIME-type.
@kgleong
kgleong / GoogleDriveGetFolderID.swift
Last active January 19, 2019 18:14
Google Drive - Get folder ID
func getFolderID(
name: String,
service: GTLRDriveService,
user: GIDGoogleUser,
completion: @escaping (String?) -> Void) {
let query = GTLRDriveQuery_FilesList.query()
// Comma-separated list of areas the search applies to. E.g., appDataFolder, photos, drive.
query.spaces = "drive"
@kgleong
kgleong / GoogleDriveViewControllerAuthorizer.swift
Last active January 19, 2019 17:13
Google Drive - Set Authorizer and User
import GTMSessionFetcher
extension ViewController: GIDSignInDelegate, GIDSignInUIDelegate {
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
// A nil error indicates a successful login
if error == nil {
// Include authorization headers/values with each Drive API request.
self.googleDriveService.authorizer = user.authentication.fetcherAuthorizer()
self.googleUser = user
} else {
@kgleong
kgleong / GoogleDriveViewController_Authorizer.swift
Last active January 1, 2019 01:35
Google Drive - View Controller - Authorizer
import GTMSessionFetcher
extension ViewController: GIDSignInDelegate, GIDSignInUIDelegate {
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
// A nil error indicates a successful login
if error == nil {
// Use the authenticated user's credentials when querying the Google Drive API.
self.googleDriveService.authorizer = user.authentication.fetcherAuthorizer()
} else {
self.googleDriveService.authorizer = nil
@kgleong
kgleong / DriveViewController_Scopes.swift
Last active January 1, 2019 01:20
Google Drive - View Controller - Add Scope
import GoogleSignIn
import GoogleAPIClientForREST
import GTMSessionFetcher
class ViewController: UIViewController {
let googleDriveService = GTLRDriveService()
override func viewDidLoad() {
// ...
GIDSignIn.sharedInstance()?.scopes = [kGTLRAuthScopeDriveFile]
@kgleong
kgleong / GoogleSignInViewController_Singleton.swift
Last active December 31, 2018 06:55
Google Sign In - View Controller - Configure GIDSignIn singleton
import GoogleSignIn
class ViewController: UIViewController {
// ...
override func viewDidLoad() {
super.viewDidLoad()
/***** Configure Google Sign In *****/
@kgleong
kgleong / GoogleSignIn_VC_Delegates.swift
Last active December 31, 2018 05:34
Google Sign In - View Controller - Delegate Conformance
extension ViewController: GIDSignInDelegate, GIDSignInUIDelegate {
// MARK: - GIDSignInDelegate
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
// A nil error indicates a successful login
googleSignInButton.isHidden = error == nil
}
}
@kgleong
kgleong / GSignIn_VC_AddButton.swift
Last active December 31, 2018 05:03
Google Sign In - View Controller - Add Sign In Button
import GoogleSignIn
class ViewController: UIViewController {
let googleSignInButton = UIButton()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(googleSignInButton)
googleSignInButton.setTitle("Google Sign In", for: .normal)
@kgleong
kgleong / GoogleSignInAppDelegate_OpenURL.swift
Created December 31, 2018 04:28
Google Sign In App Delegate Open URL
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
let sourceApplication = options[.sourceApplication] as? String
let annotation = options[.annotation]
return GIDSignIn.sharedInstance()?.handle(url, sourceApplication: sourceApplication, annotation: annotation) ?? false
}