我在我的应用程序中使用了一个SFAuthoizationView,我正在尝试从我的代码中调用authorize方法,以提示用户授权他们当前是否未经授权。
我的问题是这种方法似乎不起作用!
我的代码如下,authView
是SFAuthorizationView
,而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;
}
答案 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。