私はFBSDKLoginManagerを使用して手動でFacebookにログインしています。コードは主に動作しますが、それはすべてのエラーをスローしませんが、時にはそれがログインウィンドウ(サファリ)をトリガしませんreact-native logInWithReadPermissionsがサファリを呼び出さない場合があります。エラーはスローされず、handle(コールバック)は呼び出されません。
#import "FacebookLoginManager.h"
#import "FBSDKCoreKit/FBSDKCoreKit.h"
#import "FBSDKLoginKit/FBSDKLoginKit.h"
@implementation FacebookLoginManager
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(newSession:(RCTResponseSenderBlock)callback) {
dispatch_async(dispatch_get_main_queue(), ^{
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"public_profile", @"email"] fromViewController: nil handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
callback(@[@"Error", [NSNull null]]);
} else if (result.isCancelled) {
callback(@[@"Canceled", [NSNull null]]);
} else {
FBSDKAccessToken *token = result.token;
NSString *tokenString = token.tokenString;
NSString *userId = token.userID;
NSDictionary *credentials = @{ @"token" : tokenString, @"userId" : userId };
callback(@[[NSNull null], credentials]);
}
}];
});
};
: 私は、次のコードを持っているネイティブメソッドを作成しました。 この場合、ハンドラコードは決して呼び出されません。私がアプリケーションを閉じて、それを再び開くと、すべてが再び機能します。
時間が経過すると問題が発生するため、タイムアウトやトークンの期限切れに関係する可能性がありますが、わかりません。
どうすればこの問題を解決できますか?