2011-10-18 15 views
1

この質問は尋ねられましたが、私は一日中スレッドを読んでいて、見つけられた修正をすべて適用していて、まだ問題が残っています。Facebook SDK + iPhone SDK + SSO

Facebook SDKの新しいSSO機能を実装して、私のアプリがwebViewではなくFacebookのアプリで認証できるようにしようとしています。私のアプリがFacebookのアプリに切り替わると、数秒間の読み込みとスイッチバックが行われますが、トークンはまだヌルです。私はそれが私のアプリのURLスキームに関係しているが、私は多くのチュートリアルに続き、私の現在のplist値が正しいことをかなり確信している感じがあります。ここに私は私のappDelegateに実装したコードがある enter image description here

をし、 ViewControllerファイル: appDelegate.h

Facebook *facebook; 

appDelegate.m

// Pre 4.2 support 
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    return [facebook handleOpenURL:url]; 
} 

// For 4.2+ support 
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
    return [facebook handleOpenURL:url]; 
} 

SecondViewController.m

-(IBAction) fbButton { 
    //FACEBOOK INTEGRATION 
    appDelegate.facebook = [[Facebook alloc] initWithAppId:@"222087841143437" andDelegate:appDelegate]; 

    // Check and retrieve authorization information 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if ([defaults objectForKey:@"FBAccessTokenKey"] 
     && [defaults objectForKey:@"FBExpirationDateKey"]) { 
     appDelegate.facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; 
     appDelegate.facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; 
    } 
    if (![appDelegate.facebook isSessionValid]) { 
     appDelegate.facebook.sessionDelegate = self; 
     [appDelegate.facebook authorize:permissions]; 
     NSLog(@"Token: %@", [defaults objectForKey:@"FBAccessTokenKey"]); 
    } else { 
     NSLog(@"Already logged in!"); 

    } 
    [appDelegate.facebook requestWithGraphPath:@"me" andDelegate:self]; 

} 


- (void)request:(FBRequest *)request didLoad:(id)result { 
    NSString *nameID = [[NSString alloc] initWithFormat:@"%@ (%@)", [result objectForKey:@"name"], [result objectForKey:@"id"]]; 
    NSMutableArray *userData = [[NSMutableArray alloc] initWithObjects: 
           [NSDictionary dictionaryWithObjectsAndKeys: 
           [result objectForKey:@"id"], @"id", 
           nameID, @"name", 
           [result objectForKey:@"picture"], @"details", 
           nil], nil]; 

    [userData release]; 
    [nameID release]; 
    NSLog(@"DATA RECEIVED: %@", result); 
} 

- (void)request:(FBRequest *)request didReceiveResponse:(NSURLResponse *)response { 
    NSLog(@"request:didReceiveResponse:"); 
} 

- (void)request:(FBRequest *)request didFailWithError:(NSError *)error { 
    NSLog(@"%@", [error localizedDescription]); 
    NSLog(@"Err details: %@", [error description]); 
}; 
- (void)fbDidLogin { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[[appDelegate facebook] accessToken] forKey:@"FBAccessTokenKey"]; 
    [defaults setObject:[[appDelegate facebook] expirationDate] forKey:@"FBExpirationDateKey"]; 
    [defaults synchronize]; 
    NSLog(@"Facebook Logged in!"); 

    [appDelegate.facebook requestWithGraphPath:@"me" andDelegate:self]; 


} 

私は[appDelegate.facebook requestWithGraphPath:「私」andDelegate @:自己]を呼び出すことを知っている二回、私はそれが問題だとは思いません。私は助けを感謝し、私は本当に私はこの問題を解決し、ここでの議論を逃さなかった願ってい

2011-10-18 15:37:33.287 Track[2235:707] Token: (null) 
2011-10-18 15:37:36.578 Track[2235:707] request:didReceiveResponse: 
2011-10-18 15:37:36.584 Track[2235:707] The operation couldn’t be completed. (facebookErrDomain error 10000.) 
2011-10-18 15:37:36.586 Track[2235:707] Err details: Error Domain=facebookErrDomain Code=10000 "The operation couldn’t be completed. (facebookErrDomain error 10000.)" UserInfo=0x1ce480 {error=<CFBasicHash 0x1c9560 [0x3e368630]>{type = mutable dict, count = 2, 
entries => 
    2 : <CFString 0x19a830 [0x3e368630]>{contents = "type"} = <CFString 0x11d230 [0x3e368630]>{contents = "OAuthException"} 
    3 : <CFString 0x1f5b60 [0x3e368630]>{contents = "message"} = <CFString 0x1f8a70 [0x3e368630]>{contents = "An active access token must be used to query information about the current user."} 

:私は、ログインボタンを押したときにここで

は、コンソールからの抜粋です。ここで私はを読んで、あなたがFacebook上で作成された(実際のアプリケーション自分のFacebookアプリケーションことを確認して解決

How to implement Single Sign On (SSO) using facebook ios sdk for iphone Facebook SSO and request iOS SDK Facebook API for iPhone Error: An active access token must be used

答えて

0

を見つけるのには成功していなかったこと(多くの)数は、 )がサンドボックスモードではなく、あなたのFacebookアプリケーション(iPhone Facebookクライアント)が現在ログインしているユーザーがそのアプリケーションの開発者であることを確認する場合は、

+0

私はちょうどチェックして、アプリケーションはサンドボックスモードではなく、私は間違いなくそのアプリケーションの開発者です。それは、私のアプリの問題のように、Facebookのアプリケーション自体から返された情報を読んでいないように思えます。 –

+0

私がそれを提案したのは、Facebookがあなたのアプリケーションに切り替わった後すぐにリダイレクトされているということです。私が知る限り、通常のフローでは、必要な権限を受け入れるか、以前に受け入れていればOKを押すよう求められます。あなたのユーザープロフィールからFacebookアプリケーションを削除してみてください(プライバシー設定 - >アプリとウェブサイトを参照)。もう一度アプリを実行してみてください。私はFacebookがあなたからの入力なしであなたのアプリに戻ってはならないと言ったので... –