2009-06-12 123 views
1

我有我的應用程序中使用的SFAuthoizationView,我試圖從我的代碼調用授權方法來提示用戶授權,如果他們目前沒有授權。SFAuthorizationView授權:方法不起作用

我的問題是,這種方法似乎不工作!

我的代碼如下所示,其中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; 
} 

回答

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上工作。

+0

有一點需要注意的是,如果你只需要檢查用戶是否被授權(實際上並不解鎖),你可以使用`AuthorizationCopyRights([[authorizationView authorization] authorizationRef],[authorizationView authorizationRights],kAuthorizationEmptyEnvironment,kAuthorizationFlagDefaults | kAuthorizationFlagExtendRights | kAuthorizationFlagInteractionAllowed,NULL)`如果需要將會提示用戶。 – 2009-12-01 23:03:58

1

我在猜測@"Test String"不是您在系統中註冊的授權權限的名稱。授權視圖需要知道您要求的權利。 This document提供了關於如何做到這一點的概述。

+0

但爲什麼它會工作,以手動點擊鎖圖標和授權解鎖窗格,但不授權通過代碼? – 2009-06-12 20:24:54