我正在使用FBSDKLoginKit版本4.1.0。
当我用facebook登录时,FBSDKLoginManagerLoginResult
isCancelled为真,访问令牌为零。我已经配置了info.plist中的所有内容,并且还在AppDelegate中编写了代码。
请让我知道我错过了什么?当使用facebook登录时,FBSDKLoginManagerLoginResult isCancelled为true
谢谢。
我正在使用FBSDKLoginKit版本4.1.0。
当我用facebook登录时,FBSDKLoginManagerLoginResult
isCancelled为真,访问令牌为零。我已经配置了info.plist中的所有内容,并且还在AppDelegate中编写了代码。
请让我知道我错过了什么?当使用facebook登录时,FBSDKLoginManagerLoginResult isCancelled为true
谢谢。
请尝试这样!希望你已经正确配置了info.plist。
static NSString *kFBLoginRequestIdKey = @"userID";
static NSString *kFBUserInfoIdKey = @"id";
static NSString *kFBLoginRequestAccessTokenKey = @"accessToken";
static NSString *kFBLoginRequestAuthorizationKey = @"authResponse";
NSArray *fbReadPermissions = @[@"public_profile", @"email", @"user_friends"];
NSArray *fbUserInfoParams = @{@"fields": @"id, name, email, birthday, picture"};
[self doFacebookLogin];
-(void)doFacebookLogin {
FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
[loginManager logOut];
[loginManager logInWithReadPermissions:fbReadPermissions fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
NSLog(@"Error %@", error);
}
else if (result.isCancelled) {
NSLog(@"Cancelled by user");
}
else {
[self getFBUserProfile:^(NSMutableDictionary *requestDict) {
if(requestDict.count > 0) {
// do stuff here
}
}];
}
}];
}
-(void)getFBUserProfile:(void(^)(NSMutableDictionary *requestDict))completionBlock {
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:fbUserInfoParams] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
NSMutableDictionary *requestDict = [[NSMutableDictionary alloc] init];
if(!error) {
NSLog(@"%@",result);
NSDictionary *userData = (NSDictionary *)result;
NSString *userId = [userData valueForKey:kFBUserInfoIdKey];
NSString *token = [FBSDKAccessToken currentAccessToken].tokenString;
NSDictionary *params = @{kFBLoginRequestIdKey: userId, kFBLoginRequestAccessTokenKey: token};
[requestDict setObject:params forKey:kFBLoginRequestAuthorizationKey];
// NSString *profileURL = [[[userData valueForKey:@"picture"] valueForKey:@"data"] valueForKey:@"url"];
}
completionBlock (requestDict);
}];
}
感谢您的回答,我解决它,其实我同时使用Facebook的以及Google.I在返回GIDSignIn和FBSDKApplicationDelegate的共享实例犯错误。 –
请张贴一些代码对你有所帮助 – riddhi