Facebook SDK 3,5 запросов не работает

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

Настройки приложения Facebook

Настройки Plist

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

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

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

2 ответа

В настройках я настроил конфигурации "Приложение на Facebook" и "Приложение Native iOS". Теперь уведомления доставляются на iOS и в Web App(facebook).

Если уведомления не доставляются в iOS, перейдите в приложение "Приложение" -> "Изменить настройки" -> "Сведения о приложении" и измените категорию на "Игры / Бизнес" в соответствии с вашими потребностями. Теперь уведомления будут доставляться на ваш рабочий стол Facebook, а также iOS.

Я также попробовал конфигурации "Native Android App", чтобы доставлять свои уведомления на рабочий стол,iOS и Android, но пока не повезло. Я думаю, что есть проблема с настройками Android. Пожалуйста, дайте мне знать, если у кого-нибудь есть ответ.

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

1.> Сначала настройте свое приложение на Facebook, следуя URL-адресу Facebook.

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

Я надеюсь, что это поможет вам.

Другие вопросы по тегам