我尝试为我的应用程序进行基本的LinkedIn登录,并获取用户的个人资料网址。我在我的项目中安装了LinkedIn SDK。几个注释:在info.plist中,我已经适当地放置了linkedin URL Scheme, LSApplicationQueriesScheme 和 ExceptionDomains 属性。在我的应用代表中,我有
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
if LISDKCallbackHandler.shouldHandle(url) {
return LISDKCallbackHandler.application(application, open: url, sourceApplication: sourceApplication, annotation: annotation)
}
}
所以,在我的一个观点中,我试图让用户使用linkedin登录。我把这段代码放进去:
LISDKSessionManager.createSession(withAuth: [LISDK_BASIC_PROFILE_PERMISSION], state: nil, showGoToAppStoreDialog: true, successBlock: { (returnState) -> Void in
print("success called!")
print(LISDKSessionManager.sharedInstance().session)
}) { (error) -> Void in
print("Error: \(error)")
}
此代码会将用户带到linkedin应用程序,提示他们授权我的应用程序的权限,然后返回我的应用程序。但是,成功和错误块永远不会被调用。我在它们两个上设置断点以确保它们不打印空字符串,但它们从未被调用过。我试过等了几分钟,但仍然没有。我做错了什么?
答案 0 :(得分:2)
我也有这个问题。最后解决了这样做: -
在 app delegate 部分中,您需要实现此部分代码
if LISDKCallbackHandler.shouldHandle(url) {
return LISDKCallbackHandler.application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
}
return true
}
在以下委托方法
中func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
}
投入
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
应该是这样的
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
if LISDKCallbackHandler.shouldHandle(url) {
return LISDKCallbackHandler.application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
}
return true
}
答案 1 :(得分:0)
我可能有一个解决方案给你。您的手机上是否有多个使用相同Linkedin应用程序ID的应用程序?如果你这样做,你应该删除其他的。