2015-01-07 2 views
1

필자는 필요한 것보다 더 큰 규모 인 것으로 보이는 것을하려고합니다.Facebook iOS SDK - Post Custom Story

나는 Parse 백엔드에 대해 작성된 iOS 응용 프로그램을 가지고 있습니다. 앱의 사용자는 저장할 항목을 만들 수 있으며 때로는 이러한 항목에 대한 알림을 생성 할 수 있습니다.

사용자에 대한 간단한 경고를 Facebook에 게시하고 싶습니다.

Facebook을 iOS에 통합하는 것에 대해 Facebook 웹 사이트에서 꽤 많이 읽었지만 설명서가 혼란스럽고 StackOverflow에서 한 명 이상의 사용자가 iOS 코드에 결함이 있다고 언급했습니다.

기본적으로, 사용자 정의 이야기는 다음과 같은 항목이 포함됩니다 :

  1. 스토리 제목
  2. 스토리 설명 (여기에서 일반적으로하지 매우 많은 텍스트)
  3. 하나 이상의 사진을 (내가 정착 것 1,하지만 배수를 게시 할 수 있기를 바랍니다)
  4. 가능한 경우 사용자가 제공 한 GPS 위치입니다.

나는 내가 일하는 목적으로 페이스 북을 배우는 개발자라는 것을 인정할 것이고, 나는 페이스 북 전문가가 아니다. 내가을하고있어 무엇

  1. 텍스트
  2. 사진 (들)
  3. 친구
  4. 을 :

    내가 페이스 북의 응용 프로그램에서 놀 때, 나는 포함 할 수있는 상태 업데이트를 추가 할 수 있습니다

  5. 나는 어디로 (또는 위치)

그러나, 페이스 북 SDK에서, 상태 업데이트 게시에 대한 다음 두 가지 옵션 만 표시됩니다.

startForPostStatusUpdate:completionHandler: 
startForPostStatusUpdate:place:tags:completionHandler: 

내가 거기에 무엇이 있는지 알려면 알려주십시오. 나는 '내 응용 프로그램에서 (이미지 리소스

  • 객체를 만들기를

    1. 업로드 및 단계 :

      둘째, 나는 다음과 같은 일련의 이벤트를 수행하는 페이스 북의 문서와 샘플 코드를 따라하기 위해 노력하고있어 (내 응용 프로그램에서, 내가 여기

  • 내가 페이스 북의 웹 사이트에서 함께 재현 한 코드의)는 "포스트"조치를 등록한
  • 액션 만들기)에 "경고"개체를 등록했습니다 (주석 a를 대부분 내 컴퓨터가 아닌 다른 사람들의 코드에서 나온 것입니다.) :

    - (void)postToFacebookWithAlert:(PFObject *)alert image:(UIImage *)image {   
        // Stage the image 
        [FBRequestConnection startForUploadStagingResourceWithImage:image completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 
         if (error != nil) { 
          // See: https://developers.facebook.com/docs/ios/errors     
         } else { 
          // Package image inside a dictionary, inside an array like we'll need it for the object 
          NSArray *image    = @[@{@"url": [result objectForKey:@"uri"], @"user_generated" : @"true" }]; 
          // Create an object 
          NSString *caption   = // user-generate content 
          NSMutableDictionary<FBOpenGraphObject> *alert; 
          alert      = [FBGraphObject openGraphObjectForPostWithType:@"<myapp>:alert" 
                            title:caption 
                            image:image 
                            url:nil 
                          description:alert[@"subtitle"]]; 
          alert.provisionedForPost = YES; 
    
          // Post custom object 
          [FBRequestConnection startForPostOpenGraphObject:alert completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 
           if (error != nil) { 
            // An error occurred       
           } else { 
            NSMutableDictionary<FBGraphObject> *post = [FBGraphObject graphObject]; 
            post[@"alert"]        = result[@"id"]; 
            [FBRequestConnection startForPostWithGraphPath:@"me/<myapp>:post" graphObject:post completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 
             NSLog(@"startForPostWithGraphPath:graphObject:completionHandler:"); 
             if (error != nil) { 
              // An error occurred 
              NSLog(@"Encountered an error posting to Open Graph: %@", error);         
             } else { 
              NSLog(@"OG story posted, story id: %@", result[@"id"]);         
             } 
            }]; 
           } 
          }]; 
         } 
        }];   
    } 
    

    저는이 코드를 실제로 한 번만 사용했습니다. 내 개인 Facebook 계정으로 로그인했습니다. 활동 기록으로 이동하면 내가 게시하려고하는 항목을 볼 수 있습니다. 내 사진으로 이동하면 내가 업로드하려고하는 사진을 볼 수 있습니다.내 아내의 앱/계정에서 내 프로필을 보면 내 프로필이 표시되지 않습니다.

    누구나 내가 원하는대로 작동하는 코드가 있습니까?

  • +0

    ive 자신의 SDK를 사용하지 않았지만 (API와 직접 상호 작용 만 했음) 볼 수있는 것들은 FB 어플리케이션 범위 일뿐입니다. 또한 오류를 살펴 보았습니다 .. 오류가있을 수있는 부분을 주석 처리 된 섹션이 있습니다. – myte

    +0

    @myte 필자는 말했듯이, 코드는 실제로 "성공적으로"실행되었고 여전히 예상대로 나타나지 않았습니다. 따라서 언급 할 ** ** ** 오류가 없습니다. – mbm29414

    답변

    1

    어쩌면 "fb : 명시 적 공유"를 "true"로 설정해야하며 Facebook에서 검토해야합니다.

    리뷰가 완료되면 아래 옵션을 추가 할 수 있습니다.

    [post setObject:@"true" forKey:@"fb:explicitly_shared"]; 
    
    +0

    그 허가를 요청할 수있는 곳을 말해 줄 수 있습니까? 게시는 내 개인 계정 (내 페이스 북 - 개발자 계정이기도 함)에 작동하지만 다른 사람들에게는 작동하지 않기 때문에 ...?!? facebook-developer-dashboard에서 나는 앱이'fb : explicit_shared'를 사용하도록 요청할 수있는 곳을 볼 수 없다. – Georg