TikTok LoginKit iOS 集成问题

Ham*_*san 5 ios swift tiktok

我正在我的应用程序中使用 TikTok 实现社交登录,根据官方文档,我实现了基本设置并与我的 AppDelegate https://developers.tiktok.com/doc/getting-started-ios-quickstart-swift连接。使用示例代码实现了loginkit,但在我们从TikTok应用程序授权后,request.sendcompletionBlock没有得到任何响应或没有进入完成块。如果有人在 iOS 中实现了 tiktok 登录套件,请帮忙。

/* STEP 1 */
let scopes = "user.info.basic,video.list" // list your scopes
let scopesSet = NSOrderedSet(array:scopes)
let request = TikTokOpenSDKAuthRequest()
request.permissions = scopesSet

/* STEP 2 */
request.send(self, completion: { resp -> Void in
    /* STEP 3 */
    if resp.errCode == 0 {
        /* STEP 3.a */
        let clientKey = ... // you will receive this once you register in the Developer Portal
        let responseCode = resp.code

        // replace this baseURLstring with your own wrapper API
        let baseURlString = "https://open-api.tiktok.com/demoapp/callback/?code=\(responseCode)&client_key=\(clientKey)"
        let url = NSURL(string: baseURlstring)

        /* STEP 3.b */
        let session = URLSession(configuration: .default)
        let urlRequest = NSMutableURLRequest(url: url! as URL)
        let task = session.dataTask(with: urlRequest as URLRequest) { (data, response, error) -> Void in
             /* STEP 3.c */
        }
        task.resume()
    } else {
        // handle error
    }
}
Run Code Online (Sandbox Code Playgroud)

bit*_*yte 4

感谢作者的评论,我也明白了。就我而言,项目中没有 SceneDelegate,因此根据 TikTok 的文档,我在 AppDelegate 中实现了 3 个与 url 相关的方法:

1:

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any]) -> Bool
Run Code Online (Sandbox Code Playgroud)

2:

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any)
Run Code Online (Sandbox Code Playgroud)

3:

func application(_ application: UIApplication, handleOpen url: URL) -> Bool
Run Code Online (Sandbox Code Playgroud)

文档还建议第一种方法应该使用默认值 [:] 作为选项,这显然是错误的,所以我删除了它。

我还在第一种方法中实现了 Firebase 动态链接:

if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
      self.handleDynamicLink(dynamicLink)
      return true
}
Run Code Online (Sandbox Code Playgroud)

事实证明,如果您完全删除第一个方法并将 Firebase DL 处理移至方法 #2,则一切都会开始工作!处理动态链接并最终调用 TT 的完成块