2016-08-21 5 views
0

그래서 Facebook의 iOS SDK로 주변을 둘러 보았고 사용자가 내 앱에 로그인 할 수 있도록 관리했습니다. 나는 UIViewFBSDKLoginButton 클래스 인 this에 따라 간단히 UIButton이라는 하위 클래스로 설정했습니다. 그런 다음 @IBOutlet weak var facebookLogInBtn: FBSDKLoginButton!을 만들었습니다. 그런 다음 나는 단순히 facebookLoginBtn.readPermissions 배열을 추가, 같은Facebook 권한 iOS

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    facebookLogInBtn.delegate = self 
    facebookLogInBtn.readPermissions = ["public_profile", "email", "user_friends"] 
} 

이 잘 작동하고 내 원하는 작업 내가 필요한 여분의 권한을 수행으로 설치에 앞으로 내 권한을 갔다. 그러나 일부 인터넷 검색 후에는 FBSDKGraphRequest과 함께 FBSDKLoginManager을 사용하는 많은 사이트를 발견했습니다. 예를 들어 blog입니다. 이제 내 질문은 다음과 같습니다.

  1. 내 방식은 수용 가능하거나 해킹 된 것으로 간주됩니까? 작동하지만 표준 절차를 따르고 있는지 확실히하고 싶습니다.
  2. 내 방식으로 어떻게 든 그래프 API를 통해 데이터를 가져 오는 방법은 무엇입니까? 명시 적으로 어떤 FBSDKRequest 또는 FBSDKLoginManager 개체를 선언하지 않기 때문에. 간단히 버튼을 추가 한 다음 delegates과 Voila를 구현했습니다. 나는 접근하고있다. JSON 데이터 나 기타 내용을 구문 분석 할 필요가 없습니다.
  3. 나는 또한이 사이트의 대부분이 실질적으로 결코 UIView 클래스 중 하나를 만들지 못했음을 알아 냈습니다. FBSDKLoginButton입니다. 이것은 왜 그들이 '수동으로'모든 것을 다뤄야 만하는 이유일까요?

모든 도움을 주실 수 있습니다. 건배!

+0

아래와 같이 요약하면, 내가 페이스 북에서 로그를 처리하고 FBSDKLoginManager과 성공에 로그 아웃시키는 결국, 나는 FBSDKGraphRequest와 사용자 데이터를 검색 . 그런 다음 앱에 다시 로그인하십시오. 작동 되나요 ? –

답변

0

내가하는 일은 정확하지만 그걸로 어떤 사용자 데이터도 가져올 수 없었습니다. FBSDKLoginManager 개체를 사용하면 Facebook에서 모든 것을 처리했으며 사용자의 최종 응답 (동의 여부)을 반환하지만 내 readPermissions 배열을 통해 요청한 실제 데이터는 반환하지 않습니다. 모든 데이터 검색; 그리고 아마도 쓰기까지, 나는 그것을 위해 FBSDKGraphRequest 객체를 만들어야 만했다. 귀하의 FB 계정으로 이동하여이 응용 프로그램에 계정에서 권한을 제거

func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) 
{ 
    if error != nil 
    { 
     print("Facebook Log In Failed") 
     print(error.localizedDescription) 
    } 

    let graphRequest: FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields" : "\(FacebookPermission.NAME), \(FacebookPermission.FIRST_NAME), \(FacebookPermission.LAST_NAME), \(FacebookPermission.EMAIL)"]) 

    graphRequest.startWithCompletionHandler { (connection: FBSDKGraphRequestConnection!, result:AnyObject!, error: NSError!) in 

     if error == nil 
     { 
      print("Data retrieval was successful") 
     } 
     else 
     { 
      print("Facebook Graph Request Error") 
      print(error) 
     } 
    } 
}