我在我的应用中遇到了一些linkedin集成的问题。因为领英应用已经安装在我的iPhone设备上了。但是每当我想要通过linkedin应用程序登录应用程序时,它总是让我在AppStore中安装linkedin。我的问题是如何检查linkedin应用程序是否已安装。如果已经安装了linkedin应用程序,那么我可以直接通过linkedin登录并转到我想要的ViewController
。否则,我可以将用户移动到Appstore以安装linkedin应用程序。
另一方面,我使用了通过WebView登录。但是当我登录时,不要重定向到我想要的ViewController
。
下面是我的代码-
if statusCode == 200 {
do {
let dataDictionary = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as? [String:AnyObject]
print("response dictionary ::: \(String(describing: dataDictionary!))")
let accessToken = dataDictionary?["access_token"] as! String
UserDefaults.standard.set(accessToken, forKey: "LIAccessToken")
UserDefaults.standard.synchronize()
/*This is the api function from here i go my desired ViewController*/
self.getProfileInfo ()
DispatchQueue.main.async(execute: { () -> Void in
self.dismiss(animated: true, completion: nil)
})
}
catch {
print("Could not convert JSON data into a dictionary.")
}
}
请给出通过WebView
和领英app登录领英的解决方案。
发布于 2018-03-29 20:43:41
您可以使用以下代码进行检查,也可以使用"isInstalled“变量检查linkedin的安装情况。如果应用程序不在那里,则将此showGoToAppStoreDialog更改为false以导航到AppStore。
let isInstalled : Bool = UIApplication.shared.canOpenURL(URL(string: "linkedin://app")!)
print("\n linkedin app is there:",isInstalled)
LISDKSessionManager.createSession(withAuth: [LISDK_BASIC_PROFILE_PERMISSION,LISDK_EMAILADDRESS_PERMISSION], state: nil, showGoToAppStoreDialog: true, successBlock: { (returnState) -> Void in
print("success called!")
_ = LISDKSessionManager.sharedInstance().session
self.LinkedinLogindetails()
}) { (error) -> Void in
if error != nil
{
}
if(self.WebView.isHidden==true)
{
self.WebView.isHidden=false
self.CloseBtn.isHidden=false
}
self.linkedinkey = ""
self.linkedinsecret = ""
self.authendpoint = "https://www.linikedin.com/uas/oauth2/authorization"
self.accesstokenendpoint = "https://www.linikedin.com/uas/oauth2/accessToken"
let redirectURL = "https://com.appcoda.linkedin.oauth/oauth".addingPercentEncoding(withAllowedCharacters: CharacterSet.alphanumerics)!
let state = "linkedin\(Int(Date().timeIntervalSince1970))"
_ = "r_basicprofile,r_emailaddress"
let url = NSString(format:"https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=%@&scope=%@&state=%@&redirect_uri=%@",
self.linkedinkey,"r_basicprofile,r_emailaddress",state,redirectURL)
self.Loadurl(url as String)
}
https://stackoverflow.com/questions/49556027
复制相似问题