最近由于項目需要集成
- 首先到Facebook官網(wǎng)注冊一個賬號,然后創(chuàng)建一個應用刃唐,創(chuàng)建完應用后將APPID保存羞迷,以備后面使用;
- 點此下載iOS平臺的SDK;
- 集成SDK到項目中,具體操作如下:
1.打開下載的SDK的目錄~/Documents/FacebookSDK
;
2.拖拽Bolts.framework
,FBSDKCoreKit.Framework
,
FBSDKLoginKit.Framework
,FBSDKShareKit.Framework
到項目的Frameworks
組中。在拖拽選項中選擇Copy items if needed和Create groups
画饥。
- 配置
Xcode
工程,點擊info.plist
文件衔瓮,右鍵選擇Open As Source Code
,將如下代碼復制即可:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb+APPID</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>APPID</string>
<key>FacebookDisplayName</key>
<string>APP名稱</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
- 添加依賴庫,點擊
target->General->Linked Frameworks and Libraries
抖甘,點擊左下角的+號按鈕热鞍,依次添加以下系統(tǒng)資源庫:
Security.framework
libiconv.dylib
SystemConfiguration.framework
CoreGraphics.Framework
libsqlite3.dylib
CoreTelephony.framework
libstdc++.dylib
libz.dylib
Accounts.framework
- 在
AppDelegate
導入import <FBSDKCoreKit/FBSDKCoreKit.h>
,并實現(xiàn)FBSDKApplicationDelegate
代理方法,具體代碼如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[FBSDKApplicationDelegate sharedInstance] application:application
didFinishLaunchingWithOptions:launchOptions];
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation
];
}
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
return [[FBSDKApplicationDelegate sharedInstance] application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
}
打開
Keychain
,在Xcode8
和iOS 10
的情況下,還需要做一步操作衔彻,那就是打開Keychain
薇宠。
在Xcode
左側導航欄最上面,點擊“項目名稱”艰额,在右側面板中選擇Capabilities
澄港,在下面找到Keychain Sharing
,點擊ON
按鈕柄沮。測試登錄(這里采用的是自定義按鈕的方式)
1.在需要登錄的Controller中導入如下頭文件:
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
2.添加對應的登錄代碼
FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
[loginManager logOut];// 先退出登錄
[loginManager logInWithReadPermissions:@[@"public_profile",@"user_friends"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error == nil) {
//登錄成功
NSLog(@"===userID%@====token%@",result.token.userID,result.token.tokenString);
FBSDKLoginManagerLoginResult *response = result;
NSDictionary*params= @{@"fields":@"id,name,email,age_range,first_name,last_name,link,gender,locale,picture,timezone,updated_time,verified"};
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:result.token.userID
parameters:params
HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
NSLog(@"%@",result[@"name"]);
if (error == nil) {
NSDictionary *picture = result[@"picture"];
NSDictionary *data = picture[@"data"];
NSString *avatar = @"";
if (data[@"url"] != nil && ![data[@"url"] isKindOfClass:[NSNull class]]) {
avatar = data[@"url"];
}
NSString *userName = @"";
if (result[@"name"] != nil && ![result[@"name"] isKindOfClass:[NSNull class]]) {
userName = result[@"name"];
}
NSString *unionid = @"";
if (result[@"id"] != nil && ![result[@"id"] isKindOfClass:[NSNull class]]) {
unionid = result[@"id"];
}
}else{
[self.view makeToast:[NSString stringWithFormat:@"登錄失敗回梧,錯誤碼為%ld",error.code] duration:3 position:CSToastPositionCenter];
}
}];
}else{
//登錄失敗
[self.view makeToast:[NSString stringWithFormat:@"登錄失敗,錯誤碼為%ld",error.code] duration:3 position:CSToastPositionCenter];
NSLog(@"----%ld",error.code);
}
}];
這里需要注意的是铡溪,官網(wǎng)上寫的是通過監(jiān)聽拿到對應的頭像和姓名等信息漂辐,但是在集成過程中發(fā)現(xiàn)拿到的信息是nil,所以采用上述方式獲取想要的信息.
- 需要獲取的權限
一般情況下棕硫,使用第三方登錄髓涯,只需要
public_profile
,and
user_friends
這三種權限就可以了,此時在app
的設置頁需要填寫聯(lián)系郵箱才能擁有這些權限哈扮。這種情況下纬纪,不需要
如果你的應用需要請求public_profile
,and
user_friends
之外的額外需求包各,在你發(fā)布應用之前,
至此问畅,Facebook
第三方登錄就集成完了,如果在集成的過程中有任何問題六荒,歡迎在評論區(qū)留言护姆,我會在第一時間給予回復。