Я - самообучающееся свежее развивающееся приложение для iPhone, использующее быстрый интерфейс. Я создаю страницу входа для аутентификации Facebook с использованием FBSDK. Я успешно внедрил кнопку входа в систему, которая входит в систему и выходит из системы. Он возвращает имя пользователя и идентификатор, но он не может отображать идентификатор электронной почты пользователя и показывает ошибку кода 2500. Также я не могу войти в систему с новым пользователем. Он автоматически регистрируется с одним и тем же пользователем.Как получить адрес электронной почты пользователя с помощью FBSDK в быстрой iOS для iPhone?
Здесь ошибка:
UserInfo={com.facebook.sdk:FBSDKGraphRequestErrorCategoryKey=0, com.facebook.sdk:FBSDKGraphRequestErrorHTTPStatusCodeKey=400, com.facebook.sdk:FBSDKErrorDeveloperMessageKey=An active access token must be used to query information about the current user., com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCode=2500, com.facebook.sdk:FBSDKGraphRequestErrorParsedJSONResponseKey={
body = {
error = {
code = 2500;
"fbtrace_id" = BimF4Nuqx0v;
message = "An active access token must be used to query information about the current user.";
type = OAuthException;
};
};
code = 400;
}})
Successfully logged in with Facebook...
123
result Optional({
id = 120008981838163;
name = "Nisha Ios";
})
Did Logout of Facebook
Вот мой код в AppDelegate.swift:
import UIKit
import CoreData
import FBSDKCoreKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
var handled=FBSDKApplicationDelegate.sharedInstance().application(app, open: url,
sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String!, annotation: options[UIApplicationOpenURLOptionsKey.annotation])
return handled
}
func applicationWillResignActive(_ application: UIApplication) {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
FBSDKAppEvents.activateApp()
}
Вот мой код в ViewController.swift:
import UIKit
import FBSDKLoginKit
import FBSDKCoreKit
class ViewController: UIViewController, UITextFieldDelegate, FBSDKLoginButtonDelegate, {
@IBOutlet var emailField: UITextField!
@IBOutlet var passField: UITextField!
@IBOutlet var customButton: FBSDKLoginButton!
@IBOutlet var myView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
self.emailField.delegate = self;
self.passField.delegate = self;
customButton.readPermissions=["email","public_profile"]
customButton.delegate=self
customButton.addTarget(self, action: #selector(handleCustomFBLogin), for: UIControlEvents.touchUpInside)
func handleCustomFBLogin(){
// FBSDKLoginManager().logIn(withReadPermissions: ["email","public_profile"], from: self)
// { (result, error) -> Void in
// if error != nil {
// print("custom FB Login Failed",error)
// }
//}
self.showEmail()
print(123)
}
func showEmail()
{
FBSDKGraphRequest(graphPath: "/me", parameters: ["fields": "email, id, name"]).start {
(connection, result, err) in
if(err == nil)
{
print("result \(result)")
}
else
{
print("error \(err)")
}
}
}
public func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
if error != nil
{
print(error)
return
}
else{
print("Successfully logged in with Facebook... ")
}
//showEmail()
}
func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!){
print("Did Logout of Facebook")
}
Здесь в func handleCustomFBLogin(), я прокомментировал некоторый код. Если я раскомментирую их, я не могу получить имя пользователя или идентификатор и получить только ошибку кода 2500.
Может кто-нибудь сказать мне, что я делаю неправильно? Также помогите мне войти в систему с новым пользователем, а не автоматически войти в систему с тем же пользователем? Большое спасибо заранее :-)
http://stackoverflow.com/questions/9347104/register-with-facebook-sometimes-doesnt-provide-email/18377407#18377407 –