403 Error: disallowed_useragent

前端 未结 4 576
孤城傲影
孤城傲影 2020-12-06 15:49

I am new to mobile application development, I am developing an ios app. In which I am using google drive to get document files into my app from google account.I did that tas

相关标签:
4条回答
  • 2020-12-06 15:53

    Google is changing its Oauth policies, with this it is intended that no native web views initiate Oauth flows, I am working with an iOS app too and having the same problem, you should probably wait for them to update the SDKs and documentation or find an alternate way of authenticating to use the users information.

    0 讨论(0)
  • 2020-12-06 16:04

    After Following Google drive API Quick start, Add these 3 lines of code in AppDelegate.m didFinishLaunchingWithOptions as Shown below.. then it works fine ...

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
         NSString *userAgent = @"Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/603.1.23 (KHTML, like Gecko) Version/10.0 Mobile/14E5239e Safari/602";
    
         // set default user agent
    
         NSDictionary *dictionary = [[NSDictionary alloc]initWithObjectsAndKeys:userAgent,@"UserAgent", nil];
         [[NSUserDefaults standardUserDefaults] registerDefaults:(dictionary)];
    
        return YES;
    }
    
    0 讨论(0)
  • 2020-12-06 16:05

    There is a workaround for this issue after the recent change in Google OAuth policies.

    After integrating the Google Sign and enabling Google Drive API, I was able to work with Google Drive API to fetch all drive data. We just have to set the authorizer for GTLServiceDrive which is obtained after Google sign-in.

    service.authorizer = user.authentication.fetcherAuthorizer()

    Here is the code snippets of Google GIDSignIn, followed by fetching calendar events.

      import GoogleAPIClient
        import GTMOAuth2
        import UIKit
        import GoogleSignIn
    
        class ViewController: UIViewController, GIDSignInUIDelegate, GIDSignInDelegate {
    
          private let kApiKey = "AIzaXXXXXXXXXXXXXXXXXXXXXXX"
    
          // If modifying these scopes, delete your previously saved credentials by
          // resetting the iOS simulator or uninstall the app.
          private let scopes = [kGTLAuthScopeDriveMetadataReadonly]
          private let service = GTLServiceDrive()
    
          override func viewDidLoad() {
              super.viewDidLoad()
    
              service.apiKey = kApiKey
    
              GIDSignIn.sharedInstance().uiDelegate = self
              GIDSignIn.sharedInstance().scopes = scopes
              GIDSignIn.sharedInstance().signIn()
              GIDSignIn.sharedInstance().delegate = self
          }
    
    
          func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
    
              if user != nil {
                   print("\(user)")
                   service.authorizer = user.authentication.fetcherAuthorizer()
                   loadDriveFiles()
              }
          }
    
         // Construct a query and get a list of upcoming events from the user calendar
           func loadDriveFiles() {
                //Googly Drive fetch Query
           }
    
       }
    
    0 讨论(0)
  • 2020-12-06 16:14

    An alternative way is to use the 3rd party CloudRail SDK which can use an external browser for the authentication. This blog post covers exactly the issue you've mentioned.

    0 讨论(0)
提交回复
热议问题