react-native FBSDK LoginManager无法正常工作
我的LoginButton工作正常,但我的LoginManager没有工作。react-native FBSDK 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。
/** * 版权(C)2015年至今,脸谱公司 *保留所有权利。 * *此源代码根据源树的根目录中的 * LICENSE文件中的BSD样式许可证进行许可。在同一目录中的PATENTS文件中可以找到专利权的额外授权 *。 */
进口导入 “AppDelegate.h”
INT主(INT的argc,字符* argv的[]){ @autoreleasepool { 返回UIApplicationMain(的argc,argv的,零,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
人有一个想法陈健波青睐?
通过删除对以前使用的Facebook登录包或文件的任何引用来解决此问题。我之前从react-native-facebook-login使用FBLoginManager,并将其从xcode中移除,并且FBSDK LoginManager正常工作!
如果有人在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;
}
现在既然deeplinking代码之前Facebook的链接来它需要在您的网址,并承诺永远不会得到解决。因此,将链接代码向下移动到最后。所以,你的整个代码看起来是这样的: -
- (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];
希望它能帮助:)
我坚持了同样的问题。我唯一的“提示”是,它可能与SDK添加到XCode项目的方式有关。我期待着今天和明天,你身边的进展如何? – IanBussieres
@IanBussieres嘿,我实际上通过删除任何对以前使用的Facebook登录包或文件的引用来解决这个问题。我之前从react-native-facebook-login使用FBLoginManager,并将其从xcode中移除,并且FBSDK LoginManager正常工作! – kyangy
您应该将其设置为答案。我意识到我的同事已经安装了完全相同的软件包及其二进制文件。我删除了所有内容,从头开始安装react-native-fbsdk并且它可以工作。我肯定会赞扬你的回答。 – IanBussieres