带有 Facebook 登录的 IOS 应用程序卡在登录页面
Posted
技术标签:
【中文标题】带有 Facebook 登录的 IOS 应用程序卡在登录页面【英文标题】:IOS app with Facebook Logon stuck at Logon page 【发布时间】:2015-03-29 18:11:55 【问题描述】:我正在使用 Facebook 登录构建一个示例 ios 测试应用程序,并按照 FB SDK 的说明合并 FBSDKLoginButton。单击登录按钮不会显示 Facebook 登录选项。这是我到目前为止的代码。预期的结果是什么?我怎样才能最好地测试这种登录体验?如何创建一个测试 FB 帐户?
//在视图控制器类中
- (void)viewDidLoad
[super viewDidLoad];
FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
loginButton.readPermissions = @[@"public_profile", @"email", @"user_friends"];
loginButton.center = self.view.center;
[self.view addSubview:loginButton];
if ([FBSDKAccessToken currentAccessToken])
// User is logged in, do work such as go to next view controller.
//在应用委托类中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions
// Override point for customization after application launch.
[FBSDKLoginButton class];
// Override point for customization after application launch.
return YES;
/*return [[FBSDKApplicationDelegate sharedInstance] application:application
didFinishLaunchingWithOptions:launchOptions];
【问题讨论】:
【参考方案1】:按照说明设置 plist 后,试试这个。
#import <FBSDKCoreKit/FBSDKCoreKit.h>
- (void)applicationDidBecomeActive:(UIApplication *)application
[FBSDKAppEvents activateApp];
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
return [[FBSDKApplicationDelegate sharedInstance] application:application
didFinishLaunchingWithOptions:launchOptions];
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation];
【讨论】:
我有这段完全相同的代码。由于某种原因它不起作用。关于这里可能发生的事情还有其他想法吗? 根据给定的信息很难确定。您是否能够运行 facebook SDK 提供的示例 iOS 应用程序? 不。由于某种原因,登录集成不起作用。单击 fb 登录按钮没有任何作用。【参考方案2】:很抱歉,您的回复如此迅速,但您似乎忘记了委托:
loginButton.delegate = self
不要忘记在你的类声明中添加 FacebookDelegate 并有 2 个强制方法。 swift中有一个示例类,希望对您的Obj-C问题有所帮助。
class LoginViewController: UIViewController, FBSDKLoginButtonDelegate
override func viewDidLoad()
self.mFacebookButton.readPermissions = ["public_profile", "email", "user_friends"]
self.mFacebookButton.delegate = self
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!)
self.checkIsLogged()
override func viewWillAppear(animated: Bool)
self.checkIsLogged()
private func checkIsLogged()
if (FBSDKAccessToken.currentAccessToken() != nil)
let permissions = FBSDKAccessToken.currentAccessToken().permissions
let token = FBSDKAccessToken.currentAccessToken().tokenString
NSLog("\(permissions)")
NSLog("\(token)")
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!)
【讨论】:
以上是关于带有 Facebook 登录的 IOS 应用程序卡在登录页面的主要内容,如果未能解决你的问题,请参考以下文章
带有 Facebook 单点登录的 iOS 应用程序中的“点赞”按钮
在 iOS 上使用带有 UIActivityViewController 的 Facebook SDK 会话对象
成功登录 Facebook 后将 iOS 应用程序重定向到特定的视图控制器或 url
phonegap + facebook 插件:登录打开浏览器而不是弹出窗口(iOS)
iOS Facebook SDK 登录视图有时会显示桌面 Web 而不是移动 Web
带有 facebook/gmail 的 OAuth 不适用于 iOS 模拟器(Cordova 应用程序 + Firebase)