2013-06-04 4 views
0

В Facebook SDK 3.5, я пытаюсь отправить запрос приложения, используя следующий кодFacebook SDK 3,5 запросов не работает

Facebook App Settings

Plist Settings

NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:nil]; 

[FBWebDialogs presentRequestsDialogModallyWithSession:nil 
                  message:@"Join" 
                  title:nil 
                 parameters:params 
                  handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) 
      { 
       if (error) 
       { 
        NSLog(@"request error"); 
       } 
       else 
       { 
        if (result == FBWebDialogResultDialogNotCompleted) 
        { 
         NSLog(@"request FBWebDialogResultDialogNotCompleted"); 
        } 
        else if([[resultURL description] hasPrefix:@"fbconnect://success?request="]) 
        { 
         // Facebook returns FBWebDialogResultDialogCompleted even user 
         // presses "Cancel" button, so we differentiate it on the basis of 
         // url value, since it returns "Request" when we ACTUALLY 
         // completes Dialog 
         NSLog(@"request success"); 
        } 
        else 
        { 
         // User Cancelled the dialog 
         NSLog(@"request cancelled"); 
        } 
       } 
      } 
      ]; 

, если я использую приведенный выше код с образцом Facebook FacebookAppID, типами URL, FacebookDisplayName, он работает нормально.

Но если я даю свой собственный acebookAppID, типы URL, FacebookDisplayName, уведомления не были доставлены. Любая помощь приветствуется ....

+0

привет, пожалуйста, проверьте ваш acebookAppID и измените его в любом месте, где он написал – chandan

+0

Проверьте эту ссылку и установите ее в соответствии с ней http://stackoverflow.com/questions/16052078/facebook-registration-the-operation-couldnt- be-completed-com-facebook-sdk-er/16052146? noredirect = 1 # comment22908493_16052146 – chandan

+0

@chandan В настройках я не указал BundleID это будет проблемой ?? У меня сейчас нет сертификата распространения ... поэтому я не уточнил. –

ответ

0

Попробуйте это: -

1.> Первая настройка приложения на Facebook, следуя Facebook url.

2.> Затем используйте этот код и внесите изменения в соответствии с вашими требованиями.

-(void)inviteFriends 
{ 
    if ([[FBSession activeSession] isOpen]) 
    { 
     NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:nil]; 
     [FBWebDialogs presentRequestsDialogModallyWithSession:nil 
                 message:@"put your message here" 
                 title:nil 
                parameters:params 
                 handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) 
     { 
      if (error) 
      { 
       [self requestFailedWithError:error]; 
      } 
      else 
      { 
       if (result == FBWebDialogResultDialogNotCompleted) 
       { 
        [self requestFailedWithError:nil]; 
       } 
       else if([[resultURL description] hasPrefix:@"fbconnect://success?request="]) 
       { 
        // Facebook returns FBWebDialogResultDialogCompleted even user 
        // presses "Cancel" button, so we differentiate it on the basis of 
        // url value, since it returns "Request" when we ACTUALLY 
        // completes Dialog 
        [self requestSucceeded]; 
       } 
       else 
       { 
        // User Cancelled the dialog 
        [self requestFailedWithError:nil]; 
       } 
      } 
     } 
     ]; 

    } 
    else 
    { 
     /* 
     * open a new session with publish permission 
     */ 
     [FBSession openActiveSessionWithPublishPermissions:[NSArray arrayWithObject:@"publish_stream"] 
              defaultAudience:FBSessionDefaultAudienceFriends 
               allowLoginUI:YES 
             completionHandler:^(FBSession *session, FBSessionState status, NSError *error) 
     { 
      if (!error && status == FBSessionStateOpen) 
      { 
       NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:nil]; 
       [FBWebDialogs presentRequestsDialogModallyWithSession:nil 
                   message:[self getInviteFriendMessage] 
                   title:nil 
                  parameters:params 
                   handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) 
        { 
         if (error) 
         { 
          [self requestFailedWithError:error]; 
         } 
         else 
         { 
          if (result == FBWebDialogResultDialogNotCompleted) 
          { 
           [self requestFailedWithError:nil]; 
          } 
          else if([[resultURL description] hasPrefix:@"fbconnect://success?request="]) 
          { 
           // Facebook returns FBWebDialogResultDialogCompleted even user 
           // presses "Cancel" button, so we differentiate it on the basis of 
           // url value, since it returns "Request" when we ACTUALLY 
           // completes Dialog 
           [self requestSucceeded]; 
          } 
          else 
          { 
           // User Cancelled the dialog 
           [self requestFailedWithError:nil]; 
          } 

         } 
        }]; 
      } 
      else 
      { 
       [self requestFailedWithError:error]; 
      } 
     }]; 
    } 

} 

Проверьте доступность вашего приложения. Если разрешение не назначать то, пожалуйста, назначить права, что вы хотите в вашем приложении

NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:/*assign permission here*/ nil]; 

здесь являются вспомогательными функциями, которые призывают делегат функционировать OnFBSuccess и OnFBFailed.

- (void)requestSucceeded 
{ 
    NSLog(@"requestSucceeded"); 
    id owner = [fbDelegate class]; 
    SEL selector = NSSelectorFromString(@"OnFBSuccess"); 
    NSMethodSignature *sig = [owner instanceMethodSignatureForSelector:selector]; 
    _callback = [NSInvocation invocationWithMethodSignature:sig]; 
    [_callback setTarget:owner]; 
    [_callback setSelector:selector]; 
    [_callback retain]; 

    [_callback invokeWithTarget:fbDelegate]; 
} 

- (void)requestFailedWithError:(NSError *)error 
{ 
    NSLog(@"requestFailed"); 
    id owner = [fbDelegate class]; 
    SEL selector = NSSelectorFromString(@"OnFBFailed:"); 
    NSMethodSignature *sig = [owner instanceMethodSignatureForSelector:selector]; 
    _callback = [NSInvocation invocationWithMethodSignature:sig]; 
    [_callback setTarget:owner]; 
    [_callback setSelector:selector]; 
    [_callback setArgument:&error atIndex:2]; 
    [_callback retain]; 

    [_callback invokeWithTarget:fbDelegate]; 
} 

So the class taht calls method InviteFriend MUST have these functions: 

-(void)OnFBSuccess 
{ 
    CCLOG(@"successful"); 

    // do stuff here 
    [login release]; 
} 

-(void)OnFBFailed:(NSError *)error 
{ 
    if(error == nil) 
     CCLOG(@"user cancelled"); 
    else 
     CCLOG(@"failed"); 

    // do stuff here 
    // [login release]; 
} 


- (void)requestFailedWithError:(NSError *)error 
{ 
    if(error == nil) 
     CCLOG(@"user cancelled"); 
    else 
     CCLOG(@"failed"); 
} 

Надеюсь, это вам поможет.

+0

если это проблема с разрешениями, почему она работает для FacebookAppID. какие разрешения мы предоставляем, чтобы отправить запрос? –

+0

@ durga.chotu, сначала проверьте действительный идентификатор приложения. Если ваш идентификатор приложения верен, то в дальнейшем может возникнуть проблема с правами доступа. – chandan

+0

@chandan, какие разрешения дают для FriendRequest ?? – Raju

1

У меня настроены настройки «App on Facebook» и «Native iOS App», теперь уведомления доставляются в iOS и Web App (facebook).

Если уведомления не доставляются в iOS Goto App -> Edit Settings -> App Details и измените категорию на игры/бизнес в соответствии с вашими потребностями. Теперь уведомления будут доставлены на ваш рабочий стол Facebook, а также на iOS.

Я пробовал настройки «Настраиваемые приложения для Android», чтобы доставлять свои уведомления на рабочий стол, iOS и Android, но пока не повезло. Я думаю, что есть проблема с настройками android.please, дайте мне знать, если кто-нибудь ответит.

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