2

Twitter というボタンがあります。これをクリックすると、通常、ツイート用のビューが表示されTWTweetComposeViewControllerます。メッセージをツイートするには、自動共有と通常の共有の 2 つの方法があります。TWTweetComposeViewControllerビューと完了ボタンをクリックします。

4

2 に答える 2

3

最後に、ios5 で Twitter に関連する非常に多くの質問を検索し、twitter Developer Document も読んで、この回答を試しました。これは、自動共有を行うための解決策の 1 つだと思います。

ACAccountStore *account = [[ACAccountStore alloc] init];
        ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

        // Request access from the user to access their Twitter account
        [account requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
            // Did user allow us access?
            if (granted == YES)
            {
                // Populate array with all available Twitter accounts
                NSArray *arrayOfAccounts = [account accountsWithAccountType:accountType];

                // Sanity check
                if ([arrayOfAccounts count] > 0) 
                {
                    // Keep it simple, use the first account available
                    ACAccount *acct = [arrayOfAccounts objectAtIndex:0];

                    NSURL *url = 
                    [NSURL URLWithString:
                     @"https://upload.twitter.com/1/statuses/update_with_media.json"];

                    //  Create a POST request for the target endpoint
                    TWRequest *request = 
                    [[TWRequest alloc] initWithURL:url 
                                        parameters:nil 
                                     requestMethod:TWRequestMethodPOST];

                    //  self.accounts is an array of all available accounts; 
                    //  we use the first one for simplicity
                    [request setAccount:acct];

                    //  The "larry.png" is an image that we have locally
                    UIImage *image = (UIImage *)[dictionarydata valueForKey:@"image"];
                    NSLog(@"%@",image);
                    if (image!=nil) {

                        //  Obtain NSData from the UIImage 
                        NSData *imageData = UIImagePNGRepresentation(image);


                        //  Add the data of the image with the 
                        //  correct parameter name, "media[]"
                        [request addMultiPartData:imageData 
                                         withName:@"media[]" 
                                             type:@"multipart/form-data"];

                        // NB: Our status must be passed as part of the multipart form data
                        NSString *status = [NSString stringWithFormat:@"%@ %@ %@",[dictionaryData valueForKey:@"firstname"],[dictionaryData valueForKey:@"lastname"],[dictionarydata valueForKey:@"title"]];

                        //  Add the data of the status as parameter "status"
                        [request addMultiPartData:[status dataUsingEncoding:NSUTF8StringEncoding] 
                                         withName:@"status" 
                                             type:@"multipart/form-data"];
                        //  Perform the request.  
                        //    Note that -[performRequestWithHandler] may be called on any thread,
                        //    so you should explicitly dispatch any UI operations to the main thread 
                        [request performRequestWithHandler:
                         ^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
                             NSDictionary *dict = 
                             (NSDictionary *)[NSJSONSerialization 
                                              JSONObjectWithData:responseData options:0 error:nil];

                             // Log the result
                             NSLog(@"%@", dict);

                             dispatch_async(dispatch_get_main_queue(), ^{
                                 // perform an action that updates the UI...
                             });
                         }];
                    }else{
                        NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/1/statuses/update.json"];
                        NSDictionary *p = [NSDictionary dictionaryWithObjectsAndKeys:
                                           [NSString stringWithFormat:@"%@ %@ %@",[dictionaryData valueForKey:@"firstname"],[dictionaryData valueForKey:@"lastname"],[dictionarydata valueForKey:@"title"]], @"status",
                                           nil
                                           ];
                        TWRequest *postRequest = [[TWRequest alloc]
                                                  initWithURL:   url
                                                  parameters:    p
                                                  requestMethod: TWRequestMethodPOST
                                                  ];

                        // Post the request
                        [postRequest setAccount:acct];

                        // Block handler to manage the response
                        [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
                            NSLog(@"Twitter response, HTTP response: %i", [urlResponse statusCode]);
                        }];
}
                }
            }
        }];
于 2012-08-30T06:13:14.873 に答える