Публикация изображения на Facebook без использования SLComposeviewcontroller при доступе к учетной записи из настроек

Я просто зависаю с проблемой поделиться изображением на Facebook без использования SLComposeviewcontroller. Я добавил учетную запись Facebook в настройках. Во время обмена изображениями мое приложение сначала ищет учетную запись, если она есть в настройках, затем извлекает эту учетную запись, если нет, то позволяет пользователю войти в систему через Интернет. Но предположим, что если он извлекает учетную запись из настроек, то как я могу поделиться изображением без использования SLComposeviewcontroller. Потому что, как я вижу, когда он извлекает учетную запись из настроек, активного сеанса нет, и для этого он открывает Интернет. Можем ли мы не публиковать изображение в этой учетной записи, не открывая session, как это делает SLComposeviewcontroller?

Любое предложение будет оценено.

Спасибо- Ашутош


person iEinstein    schedule 31.07.2014    source источник


Ответы (1)


Я думаю, что это было просто, как я нашел. Просто получите информацию из настроек FB. затем сделайте SLRequest, чтобы опубликовать сообщение на стене этой учетной записи.

Код написан ниже-

if (self.accountStore == nil) {
    self.accountStore = [[ACAccountStore alloc] init];
}
ACAccountType * facebookAccountType = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

NSArray * permissions = @[@"email",@"publish_actions"];
NSDictionary * dict = @{ACFacebookAppIdKey : FacebookAppId, ACFacebookPermissionsKey : permissions, ACFacebookAudienceKey : ACFacebookAudienceEveryone};
[self.accountStore requestAccessToAccountsWithType:facebookAccountType options:dict completion:^(BOOL granted, NSError *error) {
    if (granted)
    {
        NSLog(@"granted");
        NSArray *accounts = [self.accountStore accountsWithAccountType:facebookAccountType];
        ACAccount *account = [accounts lastObject];

        // Get the access token, could be used in other scenarios
        ACAccountCredential *fbCredential = [account credential];
        NSString *accessToken = [fbCredential oauthToken];
        NSLog(@"Facebook Access Token: %@", accessToken);


        NSMutableDictionary*params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                      @"post", @"type",
                                      descriptionTxtV.text, @"message",
                                      descriptionTxtV.text, @"description",
                                      nil];

        NSData *myImageData = UIImagePNGRepresentation(postImgV.image);

        SLRequest *facebookRequest = [SLRequest requestForServiceType:SLServiceTypeFacebook requestMethod:SLRequestMethodPOST URL:[NSURL URLWithString:@"https://graph.facebook.com/me/photos"] parameters:params];
        [facebookRequest addMultipartData: myImageData withName:@"source" type:@"multipart/form-data"filename:@"TestImage"];
        [facebookRequest setAccount:account];

        [facebookRequest performRequestWithHandler:^(NSData* responseData, NSHTTPURLResponse* urlResponse, NSError* error) {
            if (responseData)
            {
                NSError *jsonError =nil;
                NSDictionary *jsonDict = [ NSJSONSerialization JSONObjectWithData :responseData options : NSJSONReadingAllowFragments error:&jsonError];
                NSLog(@"-- json: %@", jsonDict);
                [descriptionTxtV resignFirstResponder];

                UIAlertView*    aAlert = [[UIAlertView alloc] initWithTitle:APP_NAME message:@"You have shared phots to Facebook successfully." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [aAlert show];
                [self.navigationController popToRootViewControllerAnimated:YES];

            }
            else
            {
                UIAlertView*    aAlert = [[UIAlertView alloc] initWithTitle:APP_NAME message:@"Your Facebook account details can't be accessed right now. Please try later." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [aAlert show];

            }

        }];

Это все.

Спасибо

person iEinstein    schedule 01.08.2014