2013-02-19 78 views
0

我已經成功將Facebook集成到了ios 6中,但我注意到了應用程序的一個奇怪的行爲。 每當我嘗試使用Facebook登錄時,一切正常,但當任何其他用戶使用他/她的憑據嘗試登錄時,會顯示錯誤。我不知道它有什麼解決方案。在facebook集成中登錄問題

我使用Facebook的sdk示例代碼作爲參考。對於登錄,我只是設置登錄視圖框架。 FBLoginView的協議實現如下:

- (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView 
{ 
BOOL canShareAnyhow = [FBNativeDialogs canPresentShareDialogWithSession:nil]; 
// first get the buttons set for login mode 
self.postStatusBtn.enabled = YES; 
self.shareWithFriendsBtn.enabled = YES; 
self.viewFriends.enabled = YES; 

} 

- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView 
         user:(id<FBGraphUser>)user 
{ 
// here we use helper properties of FBGraphUser to dot-through to first_name and 
// id properties of the json response from the server; alternatively we could use 
// NSDictionary methods such as objectForKey to get values from the my json object 

// setting the profileID property of the FBProfilePictureView instance 
// causes the control to fetch and display the profile picture for the user 


self.profilePic.profileID = user.id; 
self.loggedInUser = user; 
NSLog(@"%@",user); 

} 

- (void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView 
{ 
BOOL canShareAnyhow = [FBNativeDialogs canPresentShareDialogWithSession:nil]; 

self.postStatusBtn.enabled = NO; 
self.shareWithFriendsBtn.enabled = NO; 
self.viewFriends.enabled = NO; 
if (!self.viewFriends.enabled) 
{ 
    self.viewFriends.titleLabel.textColor = [UIColor grayColor]; 
} 

if(!self.shareWithFriendsBtn.enabled) 
{ 
    self.shareWithFriendsBtn.titleLabel.textColor = [UIColor grayColor]; 
} 

if (!self.postStatusBtn.enabled) 
{ 
    self.postStatusBtn.titleLabel.textColor = [UIColor grayColor]; 
} 

self.profilePic.profileID = nil; 

self.loggedInUser = nil; 
} 

Thanx提前...!

+0

可能是權限,在這裏發佈您的FBLoginView代碼,那麼我們將能夠幫助您更多。 – 2013-02-19 09:23:21

+0

請張貼一些代碼或張貼錯誤:) – Rushabh 2013-02-19 09:31:42

+0

你正在得到什麼錯誤? – 2013-02-19 13:27:31

回答

3

我認爲這將解決您的問題:

  1. 轉到您的Facebook應用程序在你的Facebook帳戶。
  2. 點擊編輯您的應用程序。
  3. 轉到基本信息選項卡。
  4. 沙盒模式:選中此項,禁用
  5. 保存設置。

這將爲你工作。

+0

Thanx哥們它爲我工作....... :) – daemon22 2013-02-20 07:42:31

+3

@jatt我沒有得到編輯和沙箱選項在Facebook開發者 – user100 2014-05-23 10:34:41

0

使用此代碼

-(IBAction) loginFrmFbBtnPressed:(id)sender 
{ 
   if (FBSession.activeSession.isOpen) 
   { 
       [self getData]; 
   } else 
   { 
       [FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:YES completionHandler:^(FBSession *session, 
                                                                                                FBSessionState status, NSError *error) 
        { 
            if (error) 
            { 
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
                [alert show]; 
            } 
            else if (FB_ISSESSIONOPENWITHSTATE(status)) 
            { 
                [self getData]; 
            } 
        }]; 
   } 
} 

-(void)getData 
{ 
   if ([FBSession.activeSession.permissions indexOfObject:@"read_stream"] == NSNotFound) 
   { 
       NSArray *permissions = [[NSArray alloc] initWithObjects: 
                               @"read_stream" , nil]; 
       [FBSession.activeSession reauthorizeWithReadPermissions:permissions completionHandler:^(FBSession *session, NSError *error) { 
           if (!error) { 
               [self request]; 
           } 
       }]; 
   } 
   else 
   { 
       [self request]; 
   } 
} 

-(void)request 
{ 
   [FBRequestConnection startWithGraphPath:@"me" parameters:[NSDictionary dictionaryWithObject:@"picture,id,birthday,email,name,gender,username" forKey:@"fields"] HTTPMethod:@"GET" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
    { 
        [self meRequestResult:result WithError:error]; 
    }]; 
} 

- (void)meRequestResult:(id)result WithError:(NSError *)error 
{ 
   if ([result isKindOfClass:[NSDictionary class]]) 
   { 
       NSDictionary *dictionary; 
       if([result objectForKey:@"data"]) 
           dictionary = (NSDictionary *)[(NSArray *)[result objectForKey:@"data"] objectAtIndex:0]; 
       else 
           dictionary = (NSDictionary *)result; 
       NSLog(@"dictionary : %@",dictionary); 
        
        
   } 
} 
+0

thnx fr d代碼,但我使用Facebook sdk示例代碼作爲參考。 這將是gr8,如果你可以幫我那個... – daemon22 2013-02-19 11:14:40

1

您是否嘗試過當用戶註銷時清除令牌和別人登錄?下面的一個班輪,你需要把你在哪裏註銷用戶或用戶正在按註銷按鈕:

[FBSession.activeSession closeAndClearTokenInformation]; 

希望這會有所幫助。

+0

nope仍然是它的d相同的錯誤.. !!! – daemon22 2013-02-19 13:57:57

+0

刪除bulid,清理所有目標,然後再次運行構建並在註銷按鈕中添加上面的行。 – 2013-02-19 14:01:16

+0

這樣做後我仍然得到相同的錯誤...... – daemon22 2013-02-19 14:10:09