我正在使用 MGTwitterEngine 将 Twitter 功能添加到我的应用程序中。简单地提示用户输入用户名和密码然后开始发布非常容易。然而,奇怪的是,我注意到其他应用程序(例如 Foursquare 和 Brightkite)要求您访问他们的网站以将您的 Twitter 帐户与您的foursquare/brightkite/任何帐户相关联。
他们为什么这样做?
我的应用程序是否有理由不提示用户输入 Twitter 用户名和密码,即使它很容易?
非常感谢!特里斯坦
我正在使用 MGTwitterEngine 将 Twitter 功能添加到我的应用程序中。简单地提示用户输入用户名和密码然后开始发布非常容易。然而,奇怪的是,我注意到其他应用程序(例如 Foursquare 和 Brightkite)要求您访问他们的网站以将您的 Twitter 帐户与您的foursquare/brightkite/任何帐户相关联。
他们为什么这样做?
我的应用程序是否有理由不提示用户输入 Twitter 用户名和密码,即使它很容易?
非常感谢!特里斯坦
这是因为您使用的是Basic Auth,它只是一个用户名/密码。大多数新的 Twitter 应用程序使用更强大的OAuth,这需要您访问 Twitter.com 以允许访问,但不需要用户名/密码。Twitter API 文档声称将很快放弃对基本身份验证的支持,因此您也应该使用 OAuth。
Twitter 支持 OAuth,它允许您访问他们的帐户而无需直接询问他们的密码。
主要问题是安全性。如果/当您的数据库被黑客入侵时会发生什么?攻击者将有权访问您用户的所有 Twitter 密码。
另一方面,这些网站不存储用户密码;如果他们被黑客入侵,twitter 可以轻松禁用 oauth 凭据,在攻击者造成伤害之前将其锁定。
使用 OAuth;它更安全。
只需替换 YOUR_TWITTER_USERNAME 和 YOUR_TWITTER_PASSWORD。下面的代码必须包含在您的 viewController.m 中
NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL: [NSURL
URLWithString: @”http: //YOUR_TWITTER_USERNAME: YOUR_TWITTER_PASSWORD@twitter. com/
statuses/update. xml”]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval: 60. 0] ;
[theRequest setHTTPMethod: @”POST”] ;
[theRequest setHTTPBody: [[NSString stringWithFormat: @”status=%@”,
themessage] dataUsingEncoding: NSASCIIStringEncoding] ] ;
NSURLResponse* response;
NSError* error;
NSData* result = [NSURLConnection sendSynchronousRequest:theRequest
returningResponse: &response error: &error] ;
NSLog( @”%@”, [[[ NSString alloc] initWithData: result
encoding: NSASCIIStringEncoding] autorelease] ) ;