수색…
FacebookSDK 통합
1 단계 : SDK 설치
수동으로 또는 CocoaPods
를 통해 SDK를 설치할 수 있습니다. 후자의 옵션을 적극 권장합니다.
다음 행을 Podfile
넣으십시오.
target 'MyApp' do
use_frameworks!
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'FBSDKShareKit'
end
실행 pod install
터미널 및 오픈 .xcworkspace
대신 .xcodeproj
이후.
FBSDKLoginKit
및 FBSDKShareKit
은 선택 사항입니다. 당신은 그들을 필요로 할지도 모릅니다.
2 단계 : Facebook에 앱 만들기
빠른 시작 - 개발자 용 Facebook으로 이동하여 앱을 만듭니다.
Facebook은 앱을 만든 후에 SDK를 다운로드하라는 메시지를 표시합니다. 이미 CocoaPod를 통해 SDK를 설치 한 경우이 부분을 건너 뛸 수 있습니다.
3 단계 : .plist
편집
에이. 앱이 Facebook과 "통신"할 수있게하려면 .plist
파일에 몇 가지 설정을 입력해야합니다. 페이스 북에서 퀵 스타트 페이지에 사용자 정의 스 니펫을 제공합니다.
비. .plist
파일을 소스 코드로 편집하십시오.
기음. 사용자 정의 스 니펫을 소스 코드에 붙여 넣으십시오. 조심해! 스 니펫은 정확히 <dict>
태그의 하위 태그 여야합니다. 소스 코드는 다음과 같아야합니다.
<plist version="1.0">
<dict>
// ...
//some default settings
// ...
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb{FBAppId}</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>{FBAppId}</string>
<key>FacebookDisplayName</key>
<string>{FBAppName}</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>facebook.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
<key>fbcdn.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
<key>akamaihd.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
</plist>
스 니펫을 잘못된 위치에 붙여 넣으면 문제가 발생합니다.
4 단계 : 빠른 시작 페이지에서 Facebook에 번들 식별자를 알리십시오.
5 단계 : AppDelegate.swift
편집
에이.
import FBSDKCoreKit
비.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
return true
}
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
}
나만의 "페이스 북으로 로그인"버튼 만들기
때로는 FacebookSDK와 함께 제공되는 원래 단추 대신 "Facebook에 로그인"단추에 대한 자체 UI를 디자인하려고합니다.
- 스토리 보드에서 UIButton을 드래그하여 원하는대로 설정합니다.
- Ctrl + IBAction으로 버튼을 뷰 컨트롤러로 드래그하십시오.
- IBAction 메소드 내 에서 실제 Facebook 버튼을 다음과 같이 시뮬레이션 할 수 있습니다.
빠른:
let loginButton = FBSDKLoginButton()
loginButton.delegate = self
// Your Custom Permissions Array
loginButton.readPermissions =
[
"public_profile",
"email",
"user_about_me",
"user_photos"
]
// Hiding the button
loginButton.hidden = true
self.view.addSubview(loginButton)
// Simulating a tap for the actual Facebook SDK button
loginButton.sendActionsForControlEvents(UIControlEvents.TouchUpInside)
목표 -C :
FBSDKLoginButton *FBButton = [FBSDKLoginButton new];
// Your Custom Permissions Array
FBButton.readPermissions = @[@"public_profile",
@"email",
@"user_about_me",
@"user_photos"
];
FBButton.loginBehavior = FBSDKLoginBehaviorNative;
[FBButton setDelegate:self];
[FBButton setHidden:true];
[loginButton addSubview:FBButton];
[FBButton sendActionsForControlEvents:UIControlEventTouchUpInside];
너 끝났어.
페이스 북 사용자 데이터를 가져 오는 중
사용자가 앱에서 Facebook에 로그인하면 이제 FBButton.readPermissions
에서 요청한 데이터를 가져와야합니다.
빠른:
enum FacebookParametesField : String
{
case FIELDS_KEY = "fields"
case FIELDS_VALUE = "id, email, picture, first_name, last_name"
}
if FBSDKAccessToken.currentAccessToken() != nil
{
// Getting user facebook data
FBSDKGraphRequest(graphPath: "me",
parameters: [FacebookParametesField.FIELDS_KEY.rawValue : FacebookParametesField.FIELDS_VALUE.rawValue])
.startWithCompletionHandler({ (graphConnection : FBSDKGraphRequestConnection!, result : AnyObject!, error : NSError!) -> Void in
if error == nil
{
print("Facebook Graph phaze")
let email = result["email"]
let facebookToken = FBSDKAccessToken.currentAccessToken().tokenString
let userFacebookId = result["id"]
let firstName = result["first_name"]
let lastName = result["last_name"]
if let result = result as? Dictionary<String, AnyObject>
{
if let picture = result["picture"] as? Dictionary<String,AnyObject>
{
if let data = picture["data"] as? Dictionary <String,AnyObject>
{
if let url = data["url"] as? String
{
// Profile picture URL
let profilePictureURL = url
}
}
}
}
}
})
}