首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MacOS上无法识别CallBackURL

MacOS上无法识别CallBackURL
EN

Stack Overflow用户
提问于 2020-05-03 02:57:06
回答 1查看 74关注 0票数 0

我正试图通过Matt Donnelly (https://github.com/mattdonnelly/Swifter)的SwifterMac功能在我的MacOS中启用推特。

我在我的AppDelegate代码中实现了以下内容:

代码语言:javascript
复制
        let swifter = Swifter(consumerKey: "MYVALIDKEY", consumerSecret: "MYVALIDSECRET")

        override init(){
            super.init()

            let callbackUrl = URL(string: "registeredcallback://success")!
            swifter.authorize(withCallback: callbackUrl, success: { _, _ in
                self.swifter.postTweet(status: "test",success: { status in
                    print("successfully tweeted! \(status.description)")
                }, failure: { error in
                    print("error tweeting! \(error)")
                })
            }, failure: failureHandler)
        }

        func applicationDidFinishLaunching(_ notification: Notification) {
            NSAppleEventManager.shared().setEventHandler(self, andSelector: #selector(AppDelegate.handleEvent(_:withReplyEvent:)), forEventClass: AEEventClass(kInternetEventClass), andEventID: AEEventID(kAEGetURL))
            LSSetDefaultHandlerForURLScheme("registeredcallback" as CFString, Bundle.main.bundleIdentifier! as CFString)
            let contentView = ContentView()
            swifter.postTweet(status: "test",success: { status in
                      print("successfully tweeted! \(status.description)")
                  }, failure: { error in
                      print("error tweeting! \(error)")
                  }
            )
            // Create the window and set the content view.
            window = NSWindow(
                contentRect: NSRect(x: 0, y: 0, width: 400, height: 640 ),
                styleMask: [.titled, .closable, .miniaturizable, .fullSizeContentView],
                backing: .buffered, defer: false)
            window.center()
            window.setFrameAutosaveName("Main Window")
            window.contentView = NSHostingView(rootView: contentView)
            window.makeKeyAndOrderFront(nil)
        }

        @objc func handleEvent(_ event: NSAppleEventDescriptor!, withReplyEvent: NSAppleEventDescriptor!) {
            guard let callbackUrl = URL(string: "registeredcallback://success") else { return }
            guard let urlString = event.paramDescriptor(forKeyword: AEKeyword(keyDirectObject))?.stringValue else { return }
            guard let url = URL(string: urlString) else { return }
            Swifter.handleOpenURL(url, callbackURL: callbackUrl)
        }
    }

当我启动该应用程序时,safari会提示我一个有效的twitter身份验证屏幕,但当我单击authorize时,我会收到以下消息

代码语言:javascript
复制
Safari can't open "registeredcallback://success?oauth_token=VALIDTOKEN&oautho_verifier=ANOTHERVALIDVALUE" because macOS doesn't recognize Interest addresses starting with "registeredcallback:".

我假设有些东西没有正确注册,但是我找不出丢失的是什么。我已经测试了随Swifter提供的示例演示应用程序,它工作得很好。

我已经检查了我的应用沙箱设置为允许传入和传出通信(网络)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-06 20:19:31

看起来我错过了CFBundleURLName的plist条目。详情在此- http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61564770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档