Cocoa SFAuthorizationView授权:方法无效

Cocoa SFAuthorizationView授权:方法无效,cocoa,Cocoa,我在我的应用程序中使用了一个SFAuthorizationView,我试图从代码中调用authorize方法,以提示用户在当前未授权的情况下进行授权 我的问题是,这种方法似乎不起作用 我的代码如下所示,其中authView是SFAuthorizationView,authorizationme是在单击按钮时被调用的方法(日志消息确实显示,因此我知道它正在被调用) 如果锁被锁定,authorize消息将返回false,并且似乎不会提示用户输入密码 有人知道这是怎么回事吗 - (void) main

我在我的应用程序中使用了一个SFAuthorizationView,我试图从代码中调用authorize方法,以提示用户在当前未授权的情况下进行授权

我的问题是,这种方法似乎不起作用

我的代码如下所示,其中
authView
SFAuthorizationView
,authorizationme是在单击按钮时被调用的方法(日志消息确实显示,因此我知道它正在被调用)

如果锁被锁定,authorize消息将返回false,并且似乎不会提示用户输入密码

有人知道这是怎么回事吗

- (void) mainViewDidLoad {
    [authView setDelegate:self];
    [authView setString:"Test String"];
    [authView setAutoupdate:YES];
}

- (IBAction)authorizeMe:(id)sender {
  NSLog(@"Authorizing...");
  [authView authorize:authView];
}

- (void)authorizationViewDidAuthorize:(SFAuthorizationView *)view {
    self.enabled = YES;
}

- (void)authorizationViewDidDeauthorize:(SFAuthorizationView *)view {
    self.enabled = NO;
}

我猜
@“测试字符串”
不是您在系统中注册的授权权限的名称。授权视图需要知道您请求的是什么权利。提供了有关如何执行此操作的概述。

我也遇到了同样的问题,我注意到了一些问题

为了使SFAuthorizationView授权方法与用户交互,必须在初始化SFAuthorizationView时设置这两个标志:

AuthorizationFlags flags = kAuthorizationFlagInteractionAllowed | kAuthorizationFlagExtendRights;
[m_authView setFlags:flags];
但是,我不认为SFAuthorizationView设计成这样使用

设置这些标志后,调用[m_authView updateStatus:m_authView];导致提示用户输入管理员凭据,如果您设置[m_authView setAutoupdate:YES];将随机提示用户输入密码,当用户单击“取消”时,提示不会消失

我相信SFAuthorizationView authorization方法会故意抑制用户交互


似乎您可以调用另一个方法来代替authorize:(void)按钮pressed:(id)sender。此方法没有文档记录,它将生成编译警告,但在10.6上确实有效。

但是为什么手动单击锁定图标并授权解锁窗格而不是通过代码授权?需要注意的一点是,如果您只需要检查用户是否已获授权(而不是实际解锁锁),它会起作用您可以使用
授权版权([[authorizationView authorization]authorizationRef]、[authorizationView authorizationRights]、KAAuthorizationEmptyEnvironment、KAAuthorizationFlagDefaults | KAAuthorizationFlagExtenderRights | KAAuthorizationFlagInteractionalLowed,NULL)
在需要时提示用户。