目标C - 登录/通过推特登录 iOS7


已经

两周了,我找不到对我的查询有用的答案,我尝试了很多代码,没有任何对我有用,实际上我正在尝试构建一个登录页面,该页面能够让用户从他们的Facebook或Twitter登录/登录,它完全适用于Facebook,但Twitter的问题。

我已经在下面尝试了此代码,请提供建议和帮助,因为我仍然收到错误并且错误是

(在类型为"ViewController"的对象上找不到属性 twitterHandle)

这是我使用过的代码。请注意,我对数据库使用 Parse

*我在标题中创建了一个名为Twitter的操作按钮

-(IBAction)Twitter:(id)sender;

*我在 m 文件中有此代码,如下所示:

- (IBAction)Twitter:(id)sender {
{
    // borrowed from: http://eflorenzano.com/blog/2012/04/18/using-twitter-ios5-integration-single-sign-on/
    ACAccountStore *store = [[ACAccountStore alloc] init];
    ACAccountType *twitterType = [store accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
    [store requestAccessToAccountsWithType:twitterType options:nil completion:^(BOOL granted, NSError *error)
    {
        if(granted) {
            // Access has been granted, now we can access the accounts
            // Remember that twitterType was instantiated above
            NSArray *twitterAccounts = [store accountsWithAccountType:twitterType];
            // If there are no accounts, we need to pop up an alert
            if(twitterAccounts != nil && [twitterAccounts count] == 0)
            {
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No Twitter Accounts"
                                                                message:@"There are no Twitter accounts configured. You must add or create a Twitter separately."
                                                               delegate:nil
                                                      cancelButtonTitle:@"OK"
                                                      otherButtonTitles:nil];
                [alert show];
            } else {
                ACAccount *account = [twitterAccounts objectAtIndex:0];
                // Do something with their Twitter account
                NSURL *url = [NSURL URLWithString:@"http://api.twitter.com/1/account/verify_credentials.json"];
                SLRequest *req = [SLRequest requestForServiceType:SLServiceTypeTwitter
                                                    requestMethod:SLRequestMethodPOST
                                                              URL:url
                                                       parameters:nil];
                // Important: attach the user's Twitter ACAccount object to the request
                req.account = account;
                [req performRequestWithHandler:^(NSData *responseData,
                                                 NSHTTPURLResponse *urlResponse,
                                                 NSError *error)
                {
                    // If there was an error making the request, display a message to the user
                    if(error != nil) {
                        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Twitter Error"
                                                                        message:@"There was an error talking to Twitter. Please try again later."
                                                                       delegate:nil
                                                              cancelButtonTitle:@"OK"
                                                              otherButtonTitles:nil];
                        [alert show];
                        return;
                    }
                    // Parse the JSON response
                    NSError *jsonError = nil;
                    id resp = [NSJSONSerialization JSONObjectWithData:responseData
                                                              options:0
                                                                error:&jsonError];
                    // If there was an error decoding the JSON, display a message to the user
                    if(jsonError != nil)
                    {
                        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Twitter Error"
                                                                        message:@"Twitter is not acting properly right now. Please try again later."
                                                                       delegate:nil
                                                              cancelButtonTitle:@"OK"
                                                              otherButtonTitles:nil];
                        [alert show];
                        return;
                    }
                    NSString *screenName = [resp objectForKey:@"screen_name"];
                    self.twitterHandle = screenName;
                    PFUser *currentUser = [PFUser currentUser];
                    PFQuery *query = [PFQuery queryWithClassName:@"_User"];
                    [query whereKey:@"username" equalTo:currentUser.username];
                    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
                        if (!error) {
                            // Do something with the found objects
                            for (PFObject *object in objects)
                            {
                                object[@"TwitterHandle"] = self.twitterHandle;
                                [object saveInBackground];
                            }
                        } else {
                            // Log details of the failure
                            NSLog(@"Error: %@ %@", error, [error userInfo]);
                        }
                    }];
                }];
            }
        }
    }];
}
    }

请请帮忙:(

(property twitterHandle not found on object of type "ViewController")

告诉您,在某处,您正在尝试访问没有此类属性的 ViewController 类型的对象上名为 twitterHandle 的属性。

我怀疑问题出在这一行:

self.twitterHandle = screenName;

您只需要像这样向视图控制器界面添加一个属性:

@property (nonatomic, strong) NSString *twitterHandle;

最新更新