请复制代码,切换到应用程序并将其粘贴到那里但在哪里?

问题描述 投票:6回答:1

我正在使用oAuth2.0从我的Gmail帐户中读取电子邮件。这是我的代码

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

但在我允许后,它会向我显示此屏幕

enter image description here

并说'请复制此代码并切换到应用程序并将其粘贴到那里。'但我不知道在哪里粘贴代码。

ios swift oauth-2.0 gmail-api email-attachments
1个回答
3
投票

请使用我的代码更新您的代码,并使用您的密钥替换密码。我在我的项目中使用OAuthSwift库。另外,不要忘记在项目中添加URL类型方案。并扮演编辑角色

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

您必须使用USE 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
        }


    }
© www.soinside.com 2019 - 2024. All rights reserved.