http://developers.facebook.com/docs/guides/mobile/#ios-は本当に便利なようですが、私のアプリはマルチタスクをサポートしていないため、この「クロスサファリ」方式は機能しません。
FBDialogs(このいわゆる「新しい」APIを使用)を介した認証プロセスの簡単な例がどこかにありますか(または誰かがここにコピーしてください)?このSDKを知り始めたばかりなので、できるだけ基本的なことをしてください。
http://developers.facebook.com/docs/guides/mobile/#ios-は本当に便利なようですが、私のアプリはマルチタスクをサポートしていないため、この「クロスサファリ」方式は機能しません。
FBDialogs(このいわゆる「新しい」APIを使用)を介した認証プロセスの簡単な例がどこかにありますか(または誰かがここにコピーしてください)?このSDKを知り始めたばかりなので、できるだけ基本的なことをしてください。
数時間これを理解するのに苦労しました...
これがfbapp| background-safari認証をバイパスするソリューションであり、Facebook.mで変更するだけです。
[self authorizeWithFBAppAuth:YES safariAuth:YES]
に
[self authorizeWithFBAppAuth:NO safariAuth:NO]
メソッドで:
- (void)authorize:(NSArray *)permissions
delegate:(id<FBSessionDelegate>)delegate
。
他に何も変更せずにサンプルコードで検証しました(もちろん、kAppIdを自分のものに設定します)
なぜ地球上でFBがこれを文書化していないのか私はかなり怒っていました...
それが役に立てば幸い、
乾杯
すべての魔法があります
- (void)authorize:(NSArray *)permissions
delegate:(id<FBSessionDelegate>)delegate
どの呼び出し[self authorizeWithFBAppAuth:YES safariAuth:YES]:
FBAppAuth:YESインストールされている場合、Facebookアプリを使用して認証を試みますsafariAuth:YESデバイスがマルチタスクをサポートしている場合、Safariを使用して認証を試みますだからあなたが欲しいのは[self authorizeWithFBAppAuth:NO safariAuth:NO]
Facebook SDKを変更せずに残したい場合は、プライベートAPIを「公開」するだけです。
@interface Facebook (Private)
- (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth
safariAuth:(BOOL)trySafariAuth;
@end
そして、カテゴリがある場合は拡張します。
@interface Facebook (MyApp)
- (void)myAuthorize:(id<FBSessionDelegate>)delegate;
@end
@implementation Facebook (MyApp)
- (void)myAuthorize:(id<FBSessionDelegate>)delegate {
_permissions = [[NSArray arrayWithObjects:@"email", *(whatever you need)*, nil] retain];
_sessionDelegate = delegate;
[self authorizeWithFBAppAuth:NO safariAuth:NO]; // force in app auth
}
@end
その後、ほぼ通常どおりに使用します。
Facebook *facebook = [[Facebook alloc] initWithAppId:MY_APP_FB_ID];
[facebook myAuthorize:self];
それは彼らが実装しなかった人気のあるリクエストであり、ソリューションを備えたプルリクエストもあります...