在 iOS 中单击注销时发生 Facebook 登录?
Posted
技术标签:
【中文标题】在 iOS 中单击注销时发生 Facebook 登录?【英文标题】:Facebook login happening when clicking Logout in iOS? 【发布时间】:2015-07-05 14:43:23 【问题描述】:我有一个 viewController,它显示了一个 FB 按钮,用于注册并将用户带到下一个 viewController。
我在 info.plist 中进行了更改
AppDelegate.m
#import "AppDelegate.h"
#import <Parse/Parse.h>
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
#import <ParseFacebookUtilsV4/PFFacebookUtils.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
// Override point for customization after application launch.
// Initialize Parse.
[Parse setApplicationId:@"PARSE_APP_ID"
clientKey:@"PARSE_CLIENT_KEY"];
[PFFacebookUtils initializeFacebookWithApplicationLaunchOptions:launchOptions];
[FBSDKLoginButton class];
// [Optional] Track statistics around application opens.
[PFAnalytics trackAppOpenedWithLaunchOptions:launchOptions];
// return [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
return YES;
- (void)applicationDidBecomeActive:(UIApplication *)application
[FBSDKAppEvents activateApp];
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation];
故事板
添加 UIButton 并将类更改为 FBSDKLoginButton 将此 UIButton 中的 Segue 添加到下一个 ViewController 并将其命名为 FBSegue 从此 UIButton 添加 IBAction 并将其称为 fbLoginActionloginViewController.m
#import "LoginViewController.h"
#import <Parse/Parse.h>
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
#import <ParseFacebookUtilsV4/PFFacebookUtils.h>
- (IBAction)fbLoginAction:(id)sender
[self fbLogin];
- (void)fbLogin
NSArray *permissions = @[@"public_profile", @"email"];
[PFFacebookUtils logInInBackgroundWithReadPermissions:permissions block:^(PFUser *user, NSError *error)
if (!user)
NSLog(@"Uh oh. The user cancelled the Facebook login.");
else if (user.isNew)
NSLog(@"User signed up and logged in through Facebook!");
[self performSegueWithIdentifier:@"FBSegue" sender: self];
else
NSLog(@"User logged in through Facebook!");
[self performSegueWithIdentifier:@"FBSegue" sender: self];
];
问题
当我点击 ios 模拟器上的 Login With Facebook 按钮时,我得到 Safari 页面来授权应用程序。当我这样做时,我仍然看到 loginViewController 的 facebook 按钮更改为 Logout。
当我点击 Logout 按钮时,我被带到 Safari 上的 facebook,并显示我已经授权该应用程序的消息,然后我被带回我的应用程序。底部有注销和取消选项,但单击其中一个,我将被带到下一个视图控制器。
请指导一下?我知道,由于我没有在 viewDidLoad 方法下做任何事情,所以当应用启动时,我的用户将不会登录并转到下一个 View Controller。
【问题讨论】:
您使用的 facebook 登录不正确。根据您提供的信息,您有一个用于 fblogin 和注销的按钮?这是正确的吗?您还要更改 FBSDKLoginButton 的类吗?请确认 我的 loginViewController 中有一个 UIButton 用于 Facebook 集成。它在应用启动时显示 Login with Facebook,然后在用户提供 Facebook 登录凭据时更改为 Logout。我没有更改 FBSDKLoginButton 的类,我将 UIButton 的类更改为 FBSDKLoginButton。 【参考方案1】:我认为您以错误的方式使用 FBSDKLoginButton。
来自https://developers.facebook.com/docs/reference/ios/current/class/FBSDKLoginButton/ 上的文档
FBSDKLoginButton 与 [FBSDKAccessToken currentAccessToken] 一起使用 确定要显示的内容,并自动启动身份验证 点击时(即,您不需要手动订阅操作 目标)。
因此,您不必使用 IBAction,您可以使用 UIView 而不是 UIButton 来实现 FBSDKLoginButton
【讨论】:
以上是关于在 iOS 中单击注销时发生 Facebook 登录?的主要内容,如果未能解决你的问题,请参考以下文章
facebook 无法在 ios 应用程序中正确注销。无法切换用户