2013-02-08 2 views
3

나는 사용자 정보를 가져 오기 위해 노력하고 있지만 images.This를 가져올 수 현재 드릴 수 없습니다입니다 나는 점점 오전 오류입니다 현재 사용자에 대한 정보를 조회하는 데 사용되어야합니다활성 액세스 토큰은

{ 
    error =  { 
     code = 2500; 
     message = "An active access token must be used to query information about the current user."; 
     type = OAuthException; 
    }; 
} 

이것은 내 코드 :

if(!self.store) 
    { 
     ACAccountStore *store1 = [[ACAccountStore alloc] init]; 
     self.store=store1; 
     [store1 release]; 

    } 

    ACAccountType *fbAccountType = 
    [store accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 
    NSArray * permissions = @[@"read_stream", @"publish_stream",@"email", @"user_birthday",@"publish_actions",@"user_photos"]; 
    NSDictionary * dict = @{ACFacebookAppIdKey : @"my_key", ACFacebookPermissionsKey : permissions, ACFacebookAudienceKey : ACFacebookAudienceOnlyMe}; 
    // Request permission from the user to access the available Twitter accounts 
    [store requestAccessToAccountsWithType:fbAccountType options:dict completion:^(BOOL granted, NSError *error) { 
     __block NSString * statusText = nil; 
     if (granted) { 
      statusText = @"Logged in"; 
      NSArray * accounts = [store accountsWithAccountType:fbAccountType]; 
      store = [accounts lastObject]; 
      account = [accounts objectAtIndex:0]; 
      NSLog(@"account is: %@", account); 
      NSURL *requestURL = [NSURL URLWithString:@"https://graph.facebook.com/me?fields=picture"]; 
      SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook 
                requestMethod:SLRequestMethodGET 
                   URL:requestURL 
                 parameters:nil]; 
      request.account = account; 
      [request performRequestWithHandler:^(NSData *data, 
               NSHTTPURLResponse *response, 
               NSError *error) { 

       if(!error){ 
        NSDictionary *list =[NSJSONSerialization JSONObjectWithData:data 
                     options:kNilOptions error:&error]; 
        NSLog(@"Dictionary contains: %@", list); 
       } 
       else{ 
        //handle error gracefully 
       } 

      }]; 
     } 

URL로 https://graph.facebook.com/me을 사용하면 정상적으로 작동합니다. 하지만 프로필 사진이 필요합니다. 무엇을해야합니까?

+0

오류로 인해 액티브 액세스 토큰을 전달하지 못했다고합니다. 그 일을 시도하십시오 –

+0

어디서 토큰을 통과해야합니까? 그리고 내가 https://graph.facebook.com/me 대신 https://graph.facebook.com/me?fields=picture를 쿼리하면 제대로 작동합니다. –

+0

내 대답이 도움이됩니까? –

답변

4

"fields"는 URL 자체의 일부가 아니라 매개 변수입니다. 작동 방식 :

SLRequest *videoLimitsRequest = [SLRequest requestForServiceType:SLServiceTypeFacebook 
                requestMethod:SLRequestMethodGET 
                  URL:[NSURL URLWithString:@"https://graph.facebook.com/me"] 
                 parameters:@{@"fields": @"video_upload_limits"}]; 

계정을 SLRequest에 연결하면 FYI 토큰이 자동으로 추가됩니다.

+0

정답입니다! 매개 변수를 추가하려는 유혹을받지 않습니까? 귀하의 URL에 또는 액세스 토큰을 깰. 그것은 나에게 작은 공세자를 몰고 있었다! :) – StarlitSkies

+0

감사합니다. 애플은 요청에 대해 더 나은 API를 제공해야한다. –

0

당신은 = YourFAcebookID & access_token은 = ACCESSTOKEN

UID이 당신을 위해 작동 사용자로부터이

https://graph.facebook.com/fql?q=SELECT 이름처럼 accesstoken으로 FQL 실행할 수 있습니다.

+0

iOS 6 페이스 북 통합과 함께 사용하고 싶습니다 –

+0

IOS 버전은별로 중요하지 않습니다. 액세스 토큰을 가져 와서 쿼리를 추가해야합니다. –

+0

그는 자연스러운 페이스 북 통합을 의미합니다. 페이스 북 SDK가 아닙니다. – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

0

조금 낡았지만 대답을 깜박했습니다. FB api 3.2부터 모든 API가 기본 로그인을 위해 API 내에서 관리됩니다. 여기 내가 한 일이 있습니다 :

FBRequestConnection *newConnection = [[FBRequestConnection alloc] init]; 
FBRequest *request = [FBRequest requestWithGraphPath:@"me/albums" parameters:nil HTTPMethod:@"GET"]; 

FBRequestHandler handler = 
^(FBRequestConnection *connection, id result, NSError *error) 
{ 

    if(!error) 
    { 
     NSDictionary *list =(NSDictionary*)result; 

     int flag = 0; 
     for (int index = 0; index < [[list objectForKey:@"data"] count];index++) 
     { 
      if ([[[[list objectForKey:@"data"] objectAtIndex:index] objectForKey:@"name"] isEqualToString:@"Profile Pictures"]) 
      { 
       [self fetchAlbumImages:[[[list objectForKey:@"data"] objectAtIndex:index] objectForKey:@"id"]]; 
       flag = 1; 
      } 

     } 
     if (flag == 0) 
     { 
      [self fetchAlbumImages:@"No Album"]; 
     } 
    } 
    else 
    { 

    } 
}; 

[newConnection addRequest:request completionHandler:handler]; 
//[self.requestConnection cancel]; 


[newConnection start]; 
[newConnection release]; 
} 

- (void) fetchAlbumImages:(NSString*)albumId 
{ 
    if ([albumId isEqualToString:@"No Album"]) 
    { 
     NSMutableArray *albumArray = [[NSMutableArray alloc]init]; 
     [self performSelectorOnMainThread:@selector(sendRegistrationRequest:) withObject:albumArray waitUntilDone:YES]; 
     [albumArray release]; 
    } 
    else 
    { 
     FBRequestConnection *newConnection = [[FBRequestConnection alloc] init]; 
     FBRequest *request = [FBRequest requestWithGraphPath:[NSString stringWithFormat:@"%@/photos",albumId] parameters:nil HTTPMethod:@"GET"]; 

     FBRequestHandler handler = 
     ^(FBRequestConnection *connection, id result, NSError *error) 
     { 

      if(!error) 
      { 

       NSDictionary *list =(NSDictionary*)result; 

       NSMutableArray *albumArray = [[NSMutableArray alloc]init]; 
       for (int index = 0; index < ([[list objectForKey:@"data"] count]<10?[[list objectForKey:@"data"] count]:10);index++) 
       { 
        [albumArray addObject:[[[list objectForKey:@"data"] objectAtIndex:index] objectForKey:@"source"]]; 
       } 

       [self performSelectorOnMainThread:@selector(sendRegistrationRequest:) withObject:albumArray waitUntilDone:YES]; 
      } 
      else 
      { 

      } 
     }; 

     [newConnection addRequest:request completionHandler:handler]; 
     //[self.requestConnection cancel]; 

     self.requestConnection = newConnection; 
     [newConnection start]; 
     [newConnection release]; 
    } 
} 
관련 문제