1

LoginButton は機能しますが、LoginManager は機能しません。

handleLogin = () => {
 LoginManager.logInWithReadPermissions(['public_profile']).then(
  function(result) {
    if (result.isCancelled) {
      alert('Login cancelled');
    } else {
      alert('Login success with permissions: '
      + result.grantedPermissions.toString());
    }
  },
  function(error) {
    alert('Login fail with error: ' + error);
  }
 )
}

handleLogin() が呼び出されると、これを示す xcode に誘導されます。

/** * Copyright (c) 2015-present, Facebook, Inc. * 無断複写・転載を禁じます。* * このソース コードは、このソース ツリーのルート ディレクトリにある * LICENSE ファイルにある BSD スタイルのライセンスの下でライセンスされています。追加の特許権 * は、同じディレクトリの PATENTS ファイルにあります。*/

輸入

「AppDelegate.h」をインポート

int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate > class])); } }

私のxcodeコンソールでは、エラーはこれを示しています、

2016-07-14 17:04:36.591 asklegit[2749:839107] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 4 beyond bounds [0 .. 3]' *** First throw call stack: ( 0 CoreFoundation 0x0000000110e5cd85 __exceptionPreprocess + 165 1 libobjc.A.dylib 0x000000010fd1bdeb objc_exception_throw + 48 2 CoreFoundation 0x0000000110d45934 -[__NSArrayI objectAtIndex:] + 164 3 asklegit 0x000000010f344640 -[RCTBatchedBridge _handleRequestNumber:moduleID:methodID:params:] + 368 4 asklegit 0x000000010f343600 __33-[RCTBatchedBridge handleBuffer:]_block_invoke.460 + 1424 5 libdispatch.dylib 0x0000000114637d9d _dispatch_call_block_and_release + 12 6 libdispatch.dylib 0x00000001146583eb _dispatch_client_callout + 8 7 libdispatch.dylib 0x00000001146401ef _dispatch_main_queue_callback_4CF + 1738 8 CoreFoundation 0x0000000110db60f9 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9 9 CoreFoundation 0x0000000110d77b99 __CFRunLoopRun + 2073 10 CoreFoundation 0x0000000110d770f8 CFRunLoopRunSpecific + 488 11 GraphicsServices 0x0000000115d0ead2 GSEventRunModal + 161 12 UIKit 0x0000000112fb8f09 UIApplicationMain + 171 13 asklegit 0x000000010f2c7cff main + 111 14 libdyld.dylib 0x000000011468c92d start + 1 15 ??? 0x0000000000000001 0x0 + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException

誰でもアイデアを持っていますか?

4

2 に答える 2

1

誰かがiOSでこの問題に直面している場合、アプリケーションでユニバーサル ディープリンクを使用している場合は注意してください。私はアプリケーションでそれらを使用していましたが、私のアプリケーションのAppDelegate.m.

  return [[FBSDKApplicationDelegate sharedInstance] application:application
      openURL:url
      sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
      annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];

  if ([RCTLinkingManager application:application
                                openURL:url
                      sourceApplication:nil
                             annotation:nil]{
      return YES;
   }

ディープリンク コードが Facebook リンクの前に来るため、URL を取り込み、promise が解決されません。したがって、Linking コードを最後まで移動します。したがって、コード全体は次のようになります。

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
  if ( [[GIDSignIn sharedInstance] handleURL:url
                                     sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                  annotation:options[UIApplicationOpenURLOptionsAnnotationKey]] ) {
    return YES;
  }

  if ([[FBSDKApplicationDelegate sharedInstance] application:application
      openURL:url
      sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
      annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]) {
    return YES;
  }

  return [RCTLinkingManager application:application
                                openURL:url
                      sourceApplication:nil
                             annotation:nil];

それが役に立てば幸い :)

于 2017-08-19T19:11:25.403 に答える