6

iOS 用の新しい Facebook 3.0 SDK でアプリを更新しました。これ以前は、FBSessionDelegate と FBRequestDelegate を利用する SDK を使用していました。その SDK では、次のコードを applicationDidFinishLaunching に配置する必要がありました。

 facebook = [[Facebook alloc] initWithAppId:FB_APP_ID andDelegate:self];

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"] 
    && [defaults objectForKey:@"FBExpirationDateKey"]) {
    facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
    facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
} 

しかし、新しい 3.0 SDK では、フレームワークとリソース バンドルをインポートし、「FacebookAppID という名前の ID をバンドル *.plist に追加する」だけでよいと言われました。 FBSession を含むコードを呼び出すと、次のエラーが発生します。

 'FBSession: No AppID provided; either pass an AppID to init, or add a string valued key with the appropriate id named FacebookAppID to the bundle *.plist'

私は何が間違っているのでしょうか?

4

8 に答える 8

13

plist ファイルに「FacebookAppID」エントリがあれば十分です。

ただし、「FacebookAppID」文字列をドキュメント Web サイトから Xcode の plist ファイルにコピーした後、同じ問題が発生しました。plistファイルから「FacebookAppID」エントリを削除し、実際に入力して再入力すると、機能しました!

そのため、文字列「FacebookAppID」を HTML ファイルから plist ファイルにコピー/貼り付けすると、目に見えないマークアップもコピーされたか、文字エンコーディングが台無しになりました。

于 2013-02-04T14:36:50.910 に答える
6

ただ頭を上げてください。今日この問題が発生しましたが、最終的には、エントリを間違った .plist ファイルに配置しただけであることに気付きました。 プロジェクト ファイルをフィルタリングする場合 (左下) に入力する.plistと、2 つのファイルが表示される場合があります。1 つはテスト用で、もう 1 つは実際に設定する必要があるものです。幸運を!

于 2014-05-18T20:27:42.237 に答える
5

なぜこれが発生するのかはまだわかりませんが、回避策は、FBSessionオブジェクトにAPP_IDがあるかどうかを確認し、ない場合は手動で設定することでした。

if (![FBSession defaultAppID]) {
    [FBSession setDefaultAppID:FB_APP_ID];
}

これが誰かに役立つことを願っています!

于 2012-09-17T19:35:51.057 に答える
5

私の場合、愚かにも小文字の「d」で FacebookAppId を入力しました。誰かが同じ問題を抱えた場合に備えて、それを出すだけです。

于 2013-11-14T16:05:54.230 に答える
3

@Kwame 同じ問題に直面しました。セッション オブジェクトに App id がありません。このために、info.plist に FacebookAppID という名前のキーを追加し、facebook によって iOS アプリに提供されたアプリ ID で適切な値を設定できます。または、すでにこれを行っている場合は、- (id)initWithAppID:(NSString*)appID permissions:(NSArray*)permissions urlSchemeSuffix:(NSString*)urlSchemeSuffix tokenCacheStrategy:(FBSessionTokenCachingStrategy*)tokenCachingStrategy;メソッドで適切な値を設定することにより、プログラムでアプリ ID を設定できます。また、info.plist のアプリ ID の値をクロス チェックしてください。お役に立てれば。

于 2012-09-20T15:15:02.730 に答える
2

ここで考えられるもう 1 つの間違いは、クイック検索を使用して "plist" を検索し、アプリ ID を間違った plist ファイルに追加していることに気付かないことです。Google Maps SDK のようなフレームワークを含めた場合、独自の plist ファイルがあります。

于 2013-10-31T17:06:56.637 に答える
-1

以前の回答に加えて、FacebookAppID を間違った*.plist ファイルに追加したことに気付いたとしても、同じエラーが引き続き発生する場合は、もう一度確認してください。おそらく、別の間違った *.plistに置き換えました

于 2014-07-08T16:54:43.337 に答える