0

私のアプリでは、UISegmentControl を Yes または No に設定した Settings のビューがあり、SLRequest と Accounts Framework を使用して Facebook に表示されたページを自動的に投稿できます。その流れは次のようになります。

自動的に [いいえ] に設定されます。ユーザーが [はい] をクリックすると、次のコードが実行されます。

-(void)facebookpost {
    ACAccountStore *accountStore = [[ACAccountStore alloc] init];

    ACAccountType *facebookAccountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

    // We will pass this dictionary in the next method. It should contain your Facebook App ID key,
    // permissions and (optionally) the ACFacebookAudienceKey
    NSDictionary *options = @{ACFacebookAppIdKey : @"APPID",
    ACFacebookPermissionsKey : @[@"email", @"publish_stream"],
ACFacebookAudienceKey:ACFacebookAudienceFriends};

    // Request access to the Facebook account.
    // The user will see an alert view when you perform this method.
    [accountStore requestAccessToAccountsWithType:facebookAccountType
                                          options:options
                                       completion:^(BOOL granted, NSError *error) {
                                           if (granted)
                                           {
                                               // At this point we can assume that we have access to the Facebook account
                                               NSArray *accounts = [accountStore accountsWithAccountType:facebookAccountType];

                                               // Optionally save the account
                                               [accountStore saveAccount:[accounts lastObject] withCompletionHandler:nil];
                                           }
                                           else
                                           {
                                               [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"facebook"];
                                               [[NSUserDefaults standardUserDefaults] synchronize];
                                               NSLog(@"Failed to grant access\n%@", error);
                                           }
                                       }];

}

また、facebookposting の NSUserDefault キーの Bool 値を YES に設定します。

次に、後のコードで、ページが表示されると、facebookposting の値が YES の場合にこのコードが実行されます。NO の場合、このコードは実行されません。

-(void)writetowall {
    ACAccountStore *accountStore = [[ACAccountStore alloc] init];

    ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
    NSArray *accounts = [accountStore accountsWithAccountType:accountType];

    // If we don't have access to users Facebook account, the account store will return an empty array.
    if (accounts.count == 0)
        return;

    // Since there's only one Facebook account, grab the last object
    ACAccount *account = [accounts lastObject];

    // Create the parameters dictionary and the URL (!use HTTPS!)
    NSDictionary *parameters = @{@"message" : @"MY MESSAGE", @"link": _entry.articleUrl};
    NSURL *URL = [NSURL URLWithString:@"https://graph.facebook.com/me/feed"];

    // Create request
    SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook
                                            requestMethod:SLRequestMethodPOST
                                                      URL:URL
                                               parameters:parameters];

    // Since we are performing a method that requires authorization we can simply
    // add the ACAccount to the SLRequest
    [request setAccount:account];

    // Perform request
    [request performRequestWithHandler:^(NSData *respData, NSHTTPURLResponse *urlResp, NSError *error) {
        NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:respData
                                                                           options:kNilOptions
                                                                             error:&error];

        // Check for errors in the responseDictionary
    }];
}

私が疑問に思っているのは、Facebook からのアクセス許可の削除やパスワードの変更などを処理する方法と場所です。これは、アクセス許可が取得される最初のコード セットで処理する必要がありますか? なぜなら、基本的にそのコード セットは 1 回だけ実行され、残りの時間はウォールにポストするコードを実行するだけだからです。

4

0 に答える 0