2013-05-23 2 views
1

iOS 6 용 Facebook SDK는 게시 권한을 요청하기 전에 읽기 권한을 요구하고 상황에 따라 게시 권한을 요청할 것을 강력히 제안합니다. 그러나 나는 로그인을 위해 FB 로그인을 사용하지 않거나 읽기 권한과 관련이 없기 때문에 사람들이 앱에 행동을 게시 할 수있게하고 싶습니다.읽기 권한으로 직접 게시 권한 요청 - iOS 용 Facebook SDK

단순히 읽기 권한을 요청한 다음 기본 사용 권한 대화 상자에서 게시 권한을 즉시 요청하고 싶습니다. 내가 찾은 유일한 방법은 FBLoginView (앱과 함께 제공되는 로그인보기)를 수정하는 것입니다.하지만 사용자가 로그인하면 FB에 게시하는 자체 버튼을 만들고 싶습니다. .

이 호출 내가 지금 중 하나는 "openActiveSessionwithPublishPermissions"를 부르는 바로 그 기능을 수정하거나 어떻게 대리인

- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI { 
NSArray *permissions = [[NSArray alloc] initWithObjects: 
         @"email", 
         @"user_likes", 
         nil]; 
return [FBSession openActiveSessionWithReadPermissions:permissions 
              allowLoginUI:allowLoginUI 
            completionHandler:^(FBSession *session, 
                 FBSessionState state, 
                 NSError *error) { 
             [self sessionStateChanged:session 
                  state:state 
                  error:error]; 
            }]; 

}

이 호출

[appDelegate openSessionWithAllowLoginUI:YES]; 

이 IT 읽기 권한이 승인 된 후 함수?

+0

은 [link page] (http://developers.facebook.com/docs/reference/api/user/)를 참조하여 Facebook에서의 작업에 대한 권한 목록을 얻으십시오. 당신은 당신의 대답, 행운을 얻을 것입니다 –

답변

1

완료 핸들러에서 openActiveSessionwithPublishPermissions을 호출 할 수 있습니다. 예를 들어

: 오른쪽 [self sessionStateChanged:session state:state error:error];

업데이트 후.

- (void)connectToFacebook:(void (^)(bool granted))completion 
{ 
    ACAccountType *facebookAccountType = [accountStore 
              accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 

    // Specify App ID and permissions 
    NSDictionary *options = @{ 
           ACFacebookAppIdKey: @"0000000000000", 
           ACFacebookPermissionsKey: @[@"publish_stream", 
                  @"publish_actions"], 
           ACFacebookAudienceKey: ACFacebookAudienceEveryone 
           }; 

    [accountStore requestAccessToAccountsWithType:facebookAccountType 
              options:options 
             completion:^(BOOL granted, NSError *e) 
    { 
     // do what you gotta do, and call completion 
     completion(); 
    }]; 
} 

: 다음이 하나를 만들어

- (void)attemptToConnectToFacebookForFirstTime:(void (^)(bool granted))completion 
{ 
    ACAccountType *facebookAccountType = [accountStore 
              accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; 

    // Specify App ID and permissions 
    NSDictionary *options = @{ 
           ACFacebookAppIdKey: @"000000000000", 
           ACFacebookPermissionsKey: @[@"email"], 
           ACFacebookAudienceKey: ACFacebookAudienceEveryone 
           }; 

    [accountStore requestAccessToAccountsWithType:facebookAccountType 
              options:options 
             completion:^(BOOL granted, NSError *e) 
    { 
     // if you gotta do something here, then do it. 
     // and then call the completion 

     completion(granted); 
    }]; 
} 

: 나는 모든 페이스 북의 트랜잭션을 관리하는 데 사용하는 클래스에서이 메소드를 생성

:이, 다음과 같은 방법을 수행 한 다음과 같이 호출하십시오.

[[FacebookManager sharedManager] attemptToConnectToFacebookForFirstTime:^(bool granted) 
{ 
    if (granted) 
    { 
     [[FacebookManager sharedManager] connectToFacebook:^(bool granted) 
     { 
      // do something 
     } 
    } 
} 

제 버전은 Facebook SDK를 사용하지 않지만 t 그는 아이디어가 동일합니다.

+0

나는 그것을 시도했지만 오류를 던지고있었습니다. 그러나 자신감이 있다면 다시 시도 할 것입니다. 과거에 이것을 성공적으로 시도 했습니까? 그것은 당신의 열쇠를 찾는 것과 같습니다. 이전에는 거기를 보았을지도 모릅니다 만, 일단 그들이 반드시 있어야만한다는 것을 깨닫게되면 확실히 찾을 것입니다. –

+0

업데이트 된 답변 확인, 일부 코드 추가 – OscarVGG