STTwitter
誰かのために変更している iOS アプリで Twitter とのインターフェイスに使用しています。次のコードを使用して、初めて Twitter の承認ページを呼び出すと、次のようになります。
- (void)newUser
{
[[NetworkManager sharedInstance] resetTwitterAPI];
[[[NetworkManager sharedInstance] twitterAPI] postTokenRequest:^(NSURL *url, NSString *oauthToken) {
[[UIApplication sharedApplication] openURL:url];
} oauthCallback:@"tweepr://twitter_access_token" errorBlock:^(NSError *error) {
NSLog(@"Error %s", __PRETTY_FUNCTION__);
}];
}
* Which, in turn, calls this:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
if (![[url scheme] isEqualToString:@"tweepr"]) {
return NO;
}
NSDictionary *d = [self parametersDictionaryFromQueryString:[url query]];
NSString *token = d[@"oauth_token"];
NSString *verifier = d[@"oauth_verifier"];
[[UserLoadingRoutine sharedRoutine] setOAuthToken:token verifier:verifier];
return YES;
}
* Which finally calls this:
- (void)setOAuthToken:(NSString *)token verifier:(NSString *)verifier
{
[[[NetworkManager sharedInstance] twitterAPI] postAccessTokenRequestWithPIN:verifier successBlock:^(NSString *oauthToken, NSString *oauthTokenSecret, NSString *userID, NSString *screenName) {
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
dict[@"nickname"] = screenName;
dict[@"token"] = oauthToken;
dict[@"secret"] = oauthTokenSecret;
dict[@"user_id"] = userID;
self.userDict = dict;
NSMutableArray *users = [self.availableUsers mutableCopy];
if (![users containsObject:dict]) {
[users addObject:dict];
}
self.availableUsers = [users copy];
[[NSUserDefaults standardUserDefaults] setObject:self.availableUsers forKey:@"availableUsers"];
[[NSUserDefaults standardUserDefaults] synchronize];
[self selectUserWithIdentifier:dict[@"nickname"]];
} errorBlock:^(NSError *error) {
NSLog(@"Error");
}];
}
最初に表示される Twitter 認証ページには、以下のこのスクリーンショットに示すように、入力する必要のあるログイン フィールドとパスワード フィールドがあります。上記のコードを使用して認証ページを再度表示し、別のユーザーで認証すると、このスクリーンショットが表示され、上部でサインアウトする必要があります。これをプログラム的に行う方法はありますか?