Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Please copy code, switch to application and paste it there but where?

I am using oAuth2.0 for reading email from my Gmail account. And here is my code

 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)")
        }
        )

but after I allow permission it is showing me this screen

enter image description here

and says 'Please copy this code and switch to application and paste it there.' but I don't know where to paste code.

like image 558
Jitendra Modi Avatar asked Dec 02 '17 07:12

Jitendra Modi


1 Answers

Please Update Your code with mine one and replace secret with your key.i'm using OAuthSwift library in my project. Also Don't forgot to add URL Type Schemes in your project. and Make Role as Editor

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#
        }
        )
    }

You must have to USE Handler Method

//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
        }


    }
like image 156
Himanshu Moradiya Avatar answered Nov 15 '22 04:11

Himanshu Moradiya