2017-12-02 110 views
6

Używam oAuth2.0 do czytania wiadomości e-mail z mojego konta Gmail. I tu jest mój kodProszę skopiować kod, przejść do aplikacji i wkleić tam, ale gdzie?

oauthswift = OAuth2Swift(
      consumerKey: "242468529977-xxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com", 
      consumerSecret: "GfGVl_xxxxxxxxxxmjnAX", 
      authorizeUrl: "https://accounts.google.com/o/oauth2/auth", 
      accessTokenUrl: "https://accounts.google.com/o/oauth2/token", 
      responseType: "code" 
     ) 


     oauthswift?.allowMissingStateCheck = true 

     let _ = oauthswift?.authorize(
      withCallbackURL: URL(string: "urn:ietf:wg:oauth:2.0:oob")!, scope: "https://www.googleapis.com/auth/gmail.metadata", state: "", 
     success: { credential, response, parameters in 
      let parameters = Dictionary<String, AnyObject>() 
      // Multi-part upload 
      print(credential) 
      print(response) 


     }, 
     failure: { error in 
      print("ERROR: \(error.localizedDescription)") 
     } 
     ) 

ale po umożliwić uprawnienie to pokazano mi ten ekran

enter image description here

i mówi "Proszę skopiować ten kod i przejdź do aplikacji i wklej go tam., ale nie wiem, gdzie wkleić kod.

+0

Jecky consumerSecret: „”, usuń wartość klucza i spróbować swoich prac dla mnie tak –

Odpowiedz

3

Zaktualizuj swój kod kopalnią i zamień klucz tajny na klucz. Korzystam z biblioteki OAuthSwift w moim projekcie. Również nie zapomnij dodać schematów typu URL w swoim projekcie. i Producent Rola jako redaktor

let kClientID = "" 

func doOAuthGoogle(){ 
     let oauthswift = OAuth2Swift(
      consumerKey: kClientID, 
      consumerSecret: "", 
      authorizeUrl: "https://accounts.google.com/o/oauth2/auth", 
      accessTokenUrl: "https://accounts.google.com/o/oauth2/token", 
      responseType: "code" 
     ) 
     // For googgle the redirect_uri should match your this syntax: your.bundle.id:/oauth2Callback 
     self.oauthswift = oauthswift 
     oauthswift.authorizeURLHandler = getURLHandler() 
     // in plist define a url schem with: your.bundle.id: 
     let _ = oauthswift.authorize(
      withCallbackURL: URL(string: "com.cearsinfotech.GmailAttachements:/oauth2Callback")!, scope: "https://www.googleapis.com/auth/gmail", state: "GMAIL", 
      success: { credential, response, parameters in 
       //    self.showTokenAlert(name: "Gmail", credential: credential) 
       print(credential.oauthToken) 
       let jsonDict = try? response?.jsonObject() 
       print("SUCCESS: \(jsonDict)") 
       print(parameters) 


       let _ = oauthswift.client.get("https://www.googleapis.com/gmail/v3/about", success: { response in 
        let jsonDict:NSDictionary = try! response.jsonObject() as! NSDictionary 
        print("SUCCESS: \(jsonDict)") 

        if let arrayMessages = jsonDict.value(forKey:"messages") as? NSArray{ 
         let dict = arrayMessages[2] as! NSDictionary 
         let id = dict.value(forKey: "id") as! String 

         let _ = oauthswift.client.get("https://www.googleapis.com/gmail/v1/users/me/messages/\(id)", success: { response in 
          let jsonDict:NSDictionary = try! response.jsonObject() as! NSDictionary 
          print("SUCCESS: \(jsonDict)") 

          if let payload = jsonDict.value(forKey: "payload") as? NSDictionary 
          { 
           print(payload) 



           if let parts = payload.value(forKey: "parts") as? NSArray 
           { 
            print(parts) 
            let partDict = parts[0] as! NSDictionary 
            if let body = partDict.value(forKey: "body") as? NSDictionary 
            { 
             print(body) 
            } 

           } 


          } 


         }, failure: { error in 
          print(error) 

         }) 

        } 


       }, failure: { error in 
        print(error) 

       }) 

     }, 
      failure: { error in 
       print("ERROR: \(error.localizedDescription)") 
       //code=4/pYAZQTq2Y5nz0g0hZSAC4wC3AuQLzdJlW6pVjjXDFHM# 
     } 
     ) 
    } 

Musisz mieć zastosowania metody Handler

//MARK:- Get URL - 

    func getURLHandler() -> OAuthSwiftURLHandlerType { 
     guard let type = self.formData.data?.handlerType else { 
      return OAuthSwiftOpenURLExternally.sharedInstance 
     } 
     switch type { 
     case .external : 
      return OAuthSwiftOpenURLExternally.sharedInstance 
     case .`internal`: 
      if internalWebViewController.parent == nil { 
       self.addChildViewController(internalWebViewController) 
      } 
      return internalWebViewController 
     case .safari: 
      #if os(iOS) 
       if #available(iOS 9.0, *) { 
        let handler = SafariURLHandler(viewController: self, oauthSwift: self.oauthswift!) 
        handler.presentCompletion = { 
         print("Safari presented") 
        } 
        handler.dismissCompletion = { 
         print("Safari dismissed") 
        } 
        return handler 
       } 
      #endif 
      return OAuthSwiftOpenURLExternally.sharedInstance 
     } 


    }