我正在尝试在我的应用中实现ShareKit;在SHKConfig.h文件中,在需要 Twitter 应用程序设置的部分中,有一行我应该设置回调 URL:
我在 Twitter 上打开了一个 Twitter 应用程序并填写了那里的所有字段,但我不清楚应该在回调 URL 字段中插入哪些数据:
谁能解释一下?
你在 Twitter 的应用程序设置中写的回调参数被忽略,你可以写任何东西,例如:http ://www.google.com (任何东西都可以,因为它被忽略了)。
当您在#define 中添加回调 url 时,其值将在所有者授权步骤中发送到 Twitter,并将覆盖您之前在 Twitter 网站中写入的值。很奇怪,我知道。它与此安全漏洞有关。
回调参数是 Twitter 将在身份验证后发送给用户的 URL。在网站而不是应用程序中运行时,URL 回调用于恢复对 OAuth 流的控制。
在应用程序上,您可以将其设置为自定义方案,例如 myapplication://twitter,然后在您的应用程序中注册方案 myapplication。这样,在身份验证后,在 UIWebView 或 Safari 中运行的 Twitter 网站会启动该 URL,iOS 知道该 URL 已分配给您的应用程序,这就是您恢复对 OAuth 流的控制的方式。
这就是理论,我不知道 ShareKit 是如何工作的。可能是它在 UIWebView 上运行身份验证并检测用户的活动以手动恢复控制,这是另一种方法。
我正在使用新版本的 ShareKit,并且在消息来源中有关于 twitter 回调的评论:
回调 URL' 应该匹配您在 SHKTwitterCallbackUrl 中输入的任何内容。回调 url 不必是实际存在的 url。用户永远不会得到它,因为 ShareKit 在用户被重定向之前拦截它。它只需要匹配。
我在 twitter 设置回调 url 中设置为http://somecallbackurl.com,在源中设置相同,它就像一个魅力!:]。希望这有帮助。
你可以用这个
func application(_ application:UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey: Any]) -> Bool {
print("called")
let directedByTWTR = Twitter.sharedInstance().application(application, open: url, options: options)
return directedByTWTR
}