2012-09-17 2 views
6

iOS 용 새 Facebook 3.0 SDK로 앱을 업데이트했습니다. 이전에는 FBSessionDelegate 및 FBRequestDelegate를 사용하는 SDK를 사용했습니다. 이 SDK에서 우리는 아래 applicationDidFinishLaunching에서이 코드를 배치했다 : 새로운 3.0 SDK와 함께 지금 그러나'FBSession : No AppID 제공

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"]; 
} 

를, 우리가 할 일은 프레임 워크를 가져올 수 있음을 이야기하고있어, 자원 번들, 다음 " 번들 내가 이런 짓을했습니다 그래서 * .plist "에 FacebookAppID라는 ID를 추가,하지만 난 그것에 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' 

일을 할 수있는 무엇을?

답변

3

@Kwame 동일한 문제가 발생하여 세션 개체에 App ID가 누락되었습니다. 이를 위해 FacebookAppID 이름의 info.plist에 키를 추가하고 iOS 앱에 제공된 app ID로 적절한 값을 페이스 북별로 설정할 수 있습니다. 또는 이미 수행 한 경우 - (id)initWithAppID:(NSString*)appID permissions:(NSArray*)permissions urlSchemeSuffix:(NSString*)urlSchemeSuffix tokenCacheStrategy:(FBSessionTokenCachingStrategy*)tokenCachingStrategy; 메소드에서 적절한 값을 설정하여 프로그래밍 방식으로 앱 ID를 설정할 수 있습니다. 또한 info.plist의 앱 ID 값을 교차 확인하시기 바랍니다. 희망이 도움이됩니다.

+0

감사. 페이스 북의 iOS SDK 문서가 FacebookAppID info.plist를 설정해야만하는 것처럼 보일뿐입니다. 그들은이 모든 다른 방법을 말하는 것을 괴롭히지 않습니다. – Kwame

5

나는 아직도 이런 일이 왜 잘 모르겠지만, 내 해결 방법은 FBSession 객체가 APP_ID를 가지고 있는지 확인하는 것이 었습니다 그렇지 않은 경우, 수동으로 설정하기 :

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

희망이 누군가가 도움이!

+0

새 Facebook 북에서 더 이상 사용되지 않습니다.새로운 방법에 대한 아이디어가 있습니까? –

13

plist 파일에 "FacebookAppID"항목이 있으면 충분합니다.

그러나 설명서 웹 사이트의 "FacebookAppID"문자열을 Xcode의 plist 파일에 복사 한 후에도 동일한 문제가있었습니다. plist 파일에서 "FacebookAppID"항목을 제거하고을 입력하여 을 다시 입력하면 효과가있었습니다!

"FacebookAppID"문자열을 HTML 파일에서 plist 파일로 복사/붙여 넣을 때 보이지 않는 마크 업이 복사되거나 문자 인코딩이 엉망이되었습니다.

+2

어 ... 미친. 이것은 나이를 알아내는 데 걸렸지 만,이 대답은 실제로 문제를 해결했습니다. 감사! – Buzzrick

+0

절대적으로 미친이 작품입니다. 나는 plist 파일이 캐시되고 업데이트되는 것과 관련이 있다고 생각한다. – Eugene

2

여기에서 가능한 또 다른 실수는 빠른 검색을 사용하여 "plist"를 검색하고 잘못된 plist 파일에 응용 프로그램 ID를 추가한다는 것을 알지 못하는 것입니다. Google지도 SDK와 같은 프레임 워크를 포함했다면 자체 plist 파일이 있습니다.

5

내 경우에는 어리석게도 'd'인 FacebookAppId를 입력했습니다. 누군가가 똑같은 문제를 안고 있었을 때를 대비해서.

6

머리를 위로하기. 나는 오늘이 문제를 겪었고, 결국 나는 단지 잘못된 .plist 파일에 항목을 넣었다. 프로젝트 파일 (왼쪽 아래)을 필터링하는 경우 .plist을 입력하면 두 개의 파일이 표시 될 수 있습니다. 하나는 테스트이고 다른 하나는 실제로 설정해야하는 테스트입니다. 행운을 빈다! 단지 이전의 답변에 추가

+0

+1 OMG 얼마나 두껍습니까? – Damo

-1

: 당신이 잘못된 * .plist 파일로 FacebookAppID을 추가 한 것으로 나타났습니다 그리고 당신은 여전히 ​​같은 오류가 발생했을 경우에도, 다시을 확인합니다. 아마도 다른 것으로 바 꾸었습니다 wrong * .plist

+0

이것은 이전 답변에 대한 덧글에 속합니다. –

+0

@ Félix 예,하지만 실수로 두 번이나 실수를 할 수 있다는 것을 의미했습니다. 특히 자신의 plists가있는 라이브러리가 거의없는 경우에 그렇습니다. 아주 세심한주의를 기울일 필요가 있습니다. 아주 흔하고 매우 어리석은 버그입니다. – slxl

+0

예. 주석에 넣으십시오. 주석은 정확하게 그 정밀도에 대해 존재하며 "주의해야합니다"힌트가 필요합니다. 그들이 유용하다고 생각하면 다른 사람들이 당신의 코멘트에 투표 할 수 있습니다. 아주 좋은 코멘트를위한 배지도 있습니다 :) –