ios9的facebook登录问题
在我的应用程序中,我整合了facebook登录,并将所有需要的设置。但是,当我试图登录,我得到这个错误ios9的facebook登录问题
-canOpenURL: failed for URL: "fbauth2:/" - error: "(null)"
但我已经把
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
中的.plist文件,反正是有,我可以找到这个问题?
编辑
self.loginButton.delegate = self;
if (FBSDKAccessToken.currentAccessToken() != nil)
{
// User is already logged in, do work such as go to next view controller.
}
else
{
loginButton.center = self.view.center
loginButton.readPermissions = ["public_profile", "email", "user_friends"]
loginButton.delegate = self
}
//MARK : facebook integration
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
print(result);
if ((error) != nil)
{
// Process error
self.showCancelAlert("Error", message: "Error occured")
}
else if result.isCancelled {
// Handle cancellations
}
else {
// If you ask for multiple permissions at once, you
// should check if specific permissions missing
if result.grantedPermissions.contains("email")
{
// Do work
self.returnUserData();
}else{
self.showCancelAlert("Error", message: "Cannot process with your email address")
}
}
}
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) {
}
// accessToken is your Facebook id
func returnUserProfileImage(accessToken: NSString) -> String
{
let userID = accessToken as NSString
let facebookProfileUrl = NSURL(string: "http://graph.facebook.com/\(userID)/picture?type=large")
if facebookProfileUrl?.absoluteString != nil{
return (facebookProfileUrl?.absoluteString)!;
}else{
return "";
}
}
func returnUserData()
{
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil)
{
// Process error
print("error \(error)")
}
else
{
let userName : NSString = result.valueForKey("name") as! NSString
UserDefaults.sharedInstace.setUsername(userName as String)
if result.valueForKey("email") != nil{
let userEmail : NSString = result.valueForKey("email") as! NSString
if let id: NSString = result.valueForKey("id") as? NSString {
print("ID is: \(id)")
self.showLoading("Signin...")
WebClient.sharedInstace.socialLogin(SocialLogin(uid:String(id) , name: userName as String, imageUrl: self.returnUserProfileImage(id), email: userEmail as String, provider: "facebook"))
} else {
print("ID es null")
self.showCancelAlert("Error", message: "Cannot process with your email address")
self.loginButtonDidLogOut(self.loginButton)
}
}else{
FBSDKLoginManager().logOut()
self.loginButtonDidLogOut(self.loginButton)
print("email es null")
self.showCancelAlert("Error", message: "Cannot process with your email address")
}
}
})
}
我认为有几件事情,可能会导致您的问题。
1)你确定你已经添加了最新的FBSDKCoreKit和FBSDKLoginKit并添加这些行到你的SWIFT文件的顶部:
import FBSDKCoreKit
import FBSDKLoginKit
2)我已阅读,这只是一个错误模拟器应该被忽略。确保您在真实设备上测试此功能。
3)您是否在您的类声明的标题中包含了FBSDKLoginButtonDelegate
?
4)我会确保你的info.plist
源代码都包括在内并且是正确的。这里是我在我的应用程序中为Facebook添加的内容:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string> fb + FACEBOOKAPPIDFROMTHEFACEBOOKDEVCONSOLE </string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>FACEBOOKAPPIDFROMTHEFACEBOOKDEVCONSOLE</string>
<key>FacebookDisplayName</key>
<string>NAME OF YOUR APP</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>facebook.com</key>
<dict>
<key>NSIncludesSubdomains</key> <true />
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/>
</dict>
<key>fbcdn.net</key>
<dict>
<key>NSIncludesSubdomains</key> <true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/>
</dict>
<key>akamaihd.net</key>
<dict>
<key>NSIncludesSubdomains</key> <true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/>
</dict>
</dict>
</dict>
aparently没有任何错误,如果我在一个真正的用户在设备中测试它,那么它完美的作品。我有一个问题,为什么你需要添加
@ Mr.G我不确定,我直接从Facebook文档中按照这些步骤操作。随意标记我的答案是正确的,因为#2实际上是解决您的问题的方法。 –
当然这应该是答案。 –
您可以将代码发布到登录按钮后面吗? –
@AhmedBaracat我已经更新了代码 –
您是否检查了这个答案? http://*.com/a/36290094/826926 –