Swift4:该客户端应用程序未批准使用回调URL。

8
我正在使用Swift4:我想用Twitter登录应用程序,但当我按下“使用Twitter登录”按钮时,出现以下错误:

回调URL未经此客户端应用程序批准。批准的回调URL可以在您的应用程序设置中进行调整"UserInfo = {NSLocalizedDescription = 回调URL未经此客户端应用程序批准。批准的回调URL可以在您的应用程序设置中进行调整} 错误:Optional(“请求失败:禁止(403)”)

我遵循了这份文档并设置了所有的plist变量和应用程序委托, 这是我的登录页面代码:

@IBAction func loginWithTwitter(_ sender: Any) {

    TWTRTwitter.sharedInstance().logIn(completion: {
        (session, error) in
        if let sess = session {
            print("session: ",sess.authToken, sess.authTokenSecret, sess.userID, sess.userName)
            self.loginWithTwitter(twitter_id: sess.userID, name: sess.userName)
        } else {
            print("error: ", error?.localizedDescription as Any)
        }
    })
}

func loginWithTwitter(twitter_id: String, name: String) {
    self.deviceMac = UIDevice.current.identifierForVendor!.uuidString
    KRProgressHUD.show(withMessage: "انتظر ....")
    API.loginWithTwitter(mac:self.deviceMac, twitter_id: twitter_id, name: name, token: self.token) { (error: Error?, success: Bool, value: Any) in
        if success {
            KRProgressHUD.dismiss()
            let json = JSON(value)
            print(json)
            if(json["token"] != "") {
                let token = json["token"].string
                let def = UserDefaults.standard
                def.set(token, forKey: "token")
                def.synchronize()

                Common.setIfTwitterLogin(login: token!)
                let homeViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController

                self.present(homeViewController, animated: false, completion: nil)
            } else {
                self.errorLable.text = "عذرا لقد حدث خطأ حاول مره أخري"
            }
        } else {
            KRProgressHUD.dismiss()
            self.errorLable.text = "عذرا لقد حدث خطأ حاول مره أخري"
            if Connectivity.isConnectedToNetwork(){
                print("Internet Connection Available!")
            }else{
                Common.showToast(messsage: "الرجاء التحقق من إتصالك بالإنترنت", view: self.view)
            }
        }
    }
}

class func loginWithTwitter(mac:String, twitter_id: String, name: String, token: String, completion: @escaping (_ error: Error?, _ success: Bool,_ value: Any) -> Void) {

    let loginURL = URLs.loginWithTwitter

    let loginParameters = [
        "mac": mac,
        "twitter_id": twitter_id,
        "token": token,
        "name": name]

    print(loginURL, loginParameters)
    Alamofire.request(loginURL, method: .post, parameters: loginParameters, encoding: URLEncoding.default, headers: nil)
        .responseJSON { reponse in
            switch reponse.result {
            case .failure(let error):
                print("error: ", error)
                completion(error, false, "")
            case .success(let value):
                completion(nil, true, value)
            }
    }
}

我在 Twitter 开发者应用设置中设置了回调 URL,有人知道问题出在哪里吗?

我之前使用TwitterKit成功地实现了登录Twitter的功能,但最近它突然失效了,现在我又遇到了同样的问题。 - user2980509
1
你应该在你的应用程序中添加回调URL。请参考此相关帖子:(https://stackoverflow.com/a/50856153/959060)。希望这有所帮助。 - paolooo
安卓上出现了同样的问题,无法修复。 - Peter
谢谢Nino Paolo,这个方法很管用! - user2980509
可能是Callback url not approved despite being provided Twitter Api的重复问题。 - Hardik Thakkar
已经有很多链接提供了这个问题的答案:请查看此链接 https://dev59.com/0Kvka4cB1Zd3GeqPxrqx#50850233 - Hardik Thakkar
3个回答

12
在你的 Twitter 仪表板中,前往:https://apps.twitter.com 进入设置选项卡,并添加以下回调 URL。
twitterkit-<consumerKey>://
即,twitterkit-4bvXXXXXXNFfOXXwrXXXXXXmT://

0

在Twitter应用设置https://apps.twitter.com/中添加 twittersdk:// 作为一个回调URL,然后尝试一下。这个方法对我有效。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接