2013-02-19 3 views
0

У меня есть встроенная функция facebook в ios 6, но я заметил странное поведение приложения. Всякий раз, когда я пытаюсь войти в систему с помощью 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, тогда мы сможем вам помочь. –

+0

Пожалуйста, внесите некоторый код или сообщите об ошибке :) – Rushabh

+0

Какую ошибку вы получаете? –

ответ

3

Я думаю, что это будет исправить проблему:

  1. Перейти к вам Facebook приложение в своем аккаунте на Facebook.
  2. Нажмите править приложение.
  3. Перейдите на вкладку «Основные сведения».
  4. Режим песочница:проверить это как Отключить
  5. Сохранить настройки.

Это будет работать на вас.

+0

Thanx приятель это сработало для меня ....... :) – daemon22

+3

@jatt я не получил вариант редактирования и песочницы на facebook-разработчике – user100

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 code, но я использую код примера sdk в facebook как ссылку. Было бы gr8, если бы вы могли помочь мне с этим ... – daemon22

1

Вы пытались очистить маркер, когда пользователь выходит из системы, а кто-то другой Войти? После одного лайнера вы должны поместить туда, где вы регистрируете из пользователя или пользователь нажимает кнопку выхода из системы:

[FBSession.activeSession closeAndClearTokenInformation]; 

Надеются, что это помогает.

+0

nope все еще его d такая же ошибка .. !!! – daemon22

+0

Удалите bulid, очистите все цели, а затем снова запустите сборку и добавьте выше строку в кнопку выхода. –

+0

Я все еще получаю ту же ошибку, после этого тоже .... – daemon22

Смежные вопросы