如何使用Sharekit检索Twitter用户名

时间:2011-08-09 10:48:49

标签: iphone cocoa-touch twitter sharekit

我已经阅读了有关此内容的文档和许多论坛帖子,但我在使用Sharekit时无法检索授权用户的用户名。我正在使用oAuth。

用户可以验证确定,我可以将状态更新发布到Twitter。 Sharekit的文档说明了检索用户名:

  

访问存储的登录

     

如果您的网络服务使用基本身份验证,您可能需要发送用户名和密码以及共享项目。用户通过身份验证后,将存储凭据并可轻松访问。

// To retrieve a stored value:
// self = your service class
// In this example, let's retrieve the username and password:
NSString *username = [self getAuthValueForKey:@"username"];
NSString *password = [self getAuthValueForKey:@"password"];

//The keys used to retrieve the data are the same keys you used 
// when defining your login form:
- (NSArray *)authorizationFormFields
{
    return [NSArray arrayWithObjects:
            [SHKFormFieldSettings label:@"Username"
                                          key:@"username" <---
                                          type:SHKFormFieldTypeText
                                          start:nil],
            [SHKFormFieldSettings label:@"Password"
                                          key:@"password" <---
                                          type:SHKFormFieldTypePassword
                                          start:nil],           
            nil];
}

我尝试过使用

NSString *username  = [SHK getAuthValueForKey:@"username"];

NSString *username  = [SHKTwitter getAuthValueForKey:@"username"];

但都没有返回用户名。

有人设法检索此信息吗?非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

正如你所说twitter没有使用基本身份验证......它正在使用oauth。您的应用程序永远不会从身份验证中获取用户名或密码,它只获取oauth令牌...因此用户名不会存储在登录数据库中。

如果你想要用户名,你必须使用适当的api调用来查询它。

您可以检查shareKit的twitter模块的sendStatus功能,并创建一个获取https://dev.twitter.com/docs/api/1/get/account/verify_credentials的函数...在那里您可以获得用户名和其他内容

答案 1 :(得分:0)

reborn ShareKit解决了这个问题。请参阅FAQ

答案 2 :(得分:0)

Twitter OAuth会返回用户名,但ShareKit不会自动保存该用户名。要自己查找,请访问:

- (void)tokenAccessTicket:(OAServiceTicket *)ticket didFinishWithData:(NSData *)data 
在SHKOAuthSharer.m中

并从responseDictionary对象中检索并保存您需要的用户名或任何其他数据。 例如,用户名可以由[responseDictionary objectForKey:@"screen_name"]获取。然后,将其保存到NSUserDefaults或稍后可以检索的任何其他对象。当然,这只会在用户下次使用ShareKit登录Twitter时发生。 干杯!