【问题标题】:How to retrieve Twitter Username using Sharekit如何使用 Sharekit 检索 Twitter 用户名
【发布时间】:2011-10-23 03:01:38
【问题描述】:

我已阅读有关此的文档和许多论坛帖子,但在使用 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"];

但都不返回用户名。

有没有人设法检索到这些信息?非常感谢任何帮助。

【问题讨论】:

    标签: iphone cocoa-touch twitter sharekit


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回复。我认为 Sharekit 允许我们在使用我上面发布的代码进行身份验证时以某种方式获取用户名?但不确定这是如何工作的。
    • 谢谢。我使用此 api 获得了 twitter 用户名和其他凭据
    【解决方案2】:

    reborn ShareKit 解决了这个问题。见FAQ

    【讨论】:

      【解决方案3】:

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

      - (void)tokenAccessTicket:(OAServiceTicket *)ticket didFinishWithData:(NSData *)data 
      

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

      【讨论】:

        猜你喜欢
        • 2011-05-05
        • 2012-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-09
        • 1970-01-01
        • 2018-09-14
        相关资源
        最近更新 更多