SFAuthorizationView授权:方法不起作用

时间:2009-06-12 19:58:22

标签: cocoa

我在我的应用程序中使用了一个SFAuthoizationView,我正在尝试从我的代码中调用authorize方法,以提示用户授权他们当前是否未经授权。

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

我的代码如下,authViewSFAuthorizationView,而authorizeMe是单击按钮时调用的方法(日志消息显示,所以我知道它被调用)

如果锁被锁定,则授权消息只返回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;
}

2 个答案:

答案 0 :(得分:1)

我猜@"Test String"不是您在系统中注册的授权权的名称。授权视图需要知道您正在请求的权限。 This document提供了有关如何执行此操作的概述。

答案 1 :(得分:1)

我有同样的问题,我注意到了一些事情。

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

AuthorizationFlags flags = kAuthorizationFlagInteractionAllowed | kAuthorizationFlagExtendRights;
[m_authView setFlags:flags];

但是,我不认为SFAuthorizationView被设计为以这种方式使用。

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

我相信SFAuthorizationView授权方法会故意抑制用户交互。

好像还有另一种方法可以调用而不是授权:( void)buttonPressed:(id)sender。此方法未记录,它将生成编译警告,但它确实适用于10.6。