2012-03-01 94 views
1

在我的iOS應用程序,我只是想檢查,如果用戶已授予了Facebook publish_stream許可。如何檢查,如果用戶已授予一定權限的Facebook的iOS

我不知道如何處理對我FBRequest委託方法調用

[facebook requestWithGraphPath:@"me/permissions" andDelegate:self]; 

的響應。我試過了:

if (request == self.permissionRequest) { 
     NSString *key = [result objectForKey:@"publish_stream"]; 
     DLog(@"Key: %@", key); 
    } 

但是我得到空。

如果我嘗試

id *key = [result objectForKey:@"publish_stream"]; 
int keyInt = [key integerValue]; 
DLog(@"Key: %i", keyInt); 

我總是得到0。甚至當我知道這個權限是活躍...

回答

3

,您可根據FBRequest與「我/權限開放圖形API 」。 它將返回一個字典的響應,其中密鑰是權限。一個值將被相關聯的(1 =是,0 =否)

+0

這真的是最快的方法嗎?因爲我想在檢查當前會話是否有效的同時做這個測試,這將需要幾秒鐘...我想我可以嘗試在手前做測試... – Smikey 2012-03-01 16:14:56

+0

我認爲這是最好的方式...但沒有SDK方法這樣做,如果這是你的問題... – Aymarick 2012-03-01 16:23:22

+0

我試過id key = [result objectForKey:@「publish_stream」]; DLog(@「Key:%@」,key);但'鑰匙'是空的? – Smikey 2012-03-01 17:07:06

3

這裏的一個工作示例我爲create_events。當然可以用於其他人:

FBRequest *eventPostOK = [FBRequest requestWithGraphPath:@"me/permissions" parameters:Nil HTTPMethod:@"GET"]; 
[eventPostOK startWithCompletionHandler: ^(FBRequestConnection *connection, 
NSDictionary* result, 
NSError *error) { 
     BOOL canDoIt = FALSE; 
     if (!error) 
     { 
     FBGraphObject *data = [result objectForKey:@"data"]; 
     for(NSDictionary<FBGraphObject> *aKey in data) { 
      canDoIt = [[aKey objectForKey:@"create_event"] boolValue]; 
      } 
     } 
     else 
     NSLog(@"%@", error); 

     NSLog(@"%@", canDoIt ? @"I can create Events" : @"I can't create Events"); 
     }]; 
相關問題