IOSアクセスフェイスブック詳細
フェースブックアクセス
1.フェースブックのバックグラウンドにiosプラットフォームを配置し、fbアプリを取得する。
store idはとりあえず既存のものを探して記入してもいいです。
2.CocoaPodsはいくつかのコアライブラリを導入する
3.info.plistファイルの
[APP_]NAME]をap名に置き換える。
4.コード
アプリ起動後にsdkを初期化する
コンパイルエラー:swift関連ファイルが見つかりませんでした。
エラー:
解決方法は簡単です。swiftファイルを作成すればいいです。xcodeはブリッジファイルCreate Bridging Headerの作成を提示します。
以上がIOSアクセスフェースブックの詳細です。IOSアクセスフェースブックに関する資料は他の関連記事に注目してください。
1.フェースブックのバックグラウンドにiosプラットフォームを配置し、fbアプリを取得する。
store idはとりあえず既存のものを探して記入してもいいです。
2.CocoaPodsはいくつかのコアライブラリを導入する
pod 'FBSDKCoreKit', '~> 9.0.1'
pod 'FBSDKLoginKit', '~> 9.0.1'
pod 'FBSDKShareKit', '~> 9.0.1'
podプロジェクトは、静的ライブラリを構築し、/Users/XXX/Library/Developer/Xcode/DerivedData/Build/Products
に対応する真機/シミュレータのディレクトリになくしました。しかし、プロジェクトがコンパイルされたときは、静的ライブラリにリンクすることができます。3.info.plistファイルの
<dict>...</dict>
内にプロファイルを追加する
<key>CFBundleURLTypes</key>
<array>
<dict> <key>CFBundleURLSchemes</key> <array> <string>fb[APP_ID]</string> </array> </dict>
</array>
<key>FacebookAppID</key>
<string>[APP_ID]</string>
<key>FacebookDisplayName</key>
<string>[APP_NAME]</string>
<key>LSApplicationQueriesSchemes</key>
<array> <string>fbapi</string> <string>fbapi20130214</string> <string>fbapi20130410</string> <string>fbapi20130702</string> <string>fbapi20131010</string> <string>fbapi20131219</string> <string>fbapi20140410</string> <string>fbapi20140116</string> <string>fbapi20150313</string> <string>fbapi20150629</string> <string>fbapi20160328</string> <string>fbauth</string> <string>fb-messenger-share-api</string> <string>fbauth2</string> <string>fbshareextension</string>
</array>
[APP_]ID)置換fb apid.[APP_]NAME]をap名に置き換える。
4.コード
アプリ起動後にsdkを初期化する
// AppDelegate.m
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(nonnull NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options{
[[FBSDKApplicationDelegate sharedInstance] application:application openURL:url options:options];
return YES;
}
iOS 13はウェブサイトを開く機能をSceene Delegateに移動しました。
// SceneDelegate.m
#import <FBSDKCoreKit/FBSDKCoreKit.h>
@import FacebookCore;
@implementation SceneDelegate
- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts{
UIOpenURLContext *context = URLContexts.allObjects.firstObject;
[FBSDKApplicationDelegate.sharedInstance application:UIApplication.sharedApplication
openURL:context.URL
sourceApplication:context.options.sourceApplication
annotation:context.options.annotation];
}
ログイン
#import "FBHelper.h"
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
@implementation FBHelper
static FBHelper *_sharedIns = nil;
+(instancetype) shareInstance {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedIns = [[self alloc] init] ;
}) ;
return _sharedIns ;
}
-(void)showLoginBtn:(UIView*)view{
FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
loginButton.center = view.center;
[view addSubview:loginButton];
}
-(void)login:(UIViewController*)vc{
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithPermissions:@[@"publish_actions"]
fromViewController:vc
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
NSLog(@"--- login fail, err: %@", error);
return;
}
FBSDKAccessToken* accessToken = [FBSDKAccessToken currentAccessToken];
if (accessToken) {
NSLog(@"--- login success, userId: %@, token: %@", accessToken.userID, accessToken.tokenString);
return;
}
NSLog(@"--- login cancel");
}];
}
-(void)logout{
if ([FBSDKAccessToken currentAccessToken]) {
NSLog(@"--- has accessToken");
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logOut];
} else {
NSLog(@"--- no accessToken");
}
}
-(void)getUserData{
if ([FBSDKAccessToken currentAccessToken]) {
if ([FBSDKAccessToken currentAccessToken]) {
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me?fields=id,name,token_for_business" parameters:nil]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (!error) {
NSLog(@"--- fetched success, result: %@", result);
} else {
NSLog(@"--- fetched error: %@", error);
}
}];
}
} else {
NSLog(@"--- no accessToken");
}
}
@end
穴を踏むコンパイルエラー:swift関連ファイルが見つかりませんでした。
エラー:
Undefined symbol: __swift_FORCE_LOAD_$_
sdkはswiftを使っていますが、工程構成にはswiftヘッダファイルの検索経路が設定されていません。解決方法は簡単です。swiftファイルを作成すればいいです。xcodeはブリッジファイルCreate Bridging Headerの作成を提示します。
以上がIOSアクセスフェースブックの詳細です。IOSアクセスフェースブックに関する資料は他の関連記事に注目してください。