【转】 如何绑定或者解除绑定微博和人人帐号

           OAuth2.0验证得到了广泛的应用,其中微博和人人都是用了这种认证方式。在IOS开发微博和人人的客户端时,首先要解决的问题就是微博的绑定和解除绑定。绑定比较容易解决,按照官方提供的OAuth流程即可实现。而解除绑定比较麻烦,需要考虑IOS的网络请求过程的缓存机制。

         IOS网络请求一般是用NSURLRequest类,而IOS采用NSURLRequest请求时会帮你主动记录下来你访问的站点设置的cookie,而且很很有效,以至于要解除绑定有些麻烦,即当你下次再访问这个站点时,NSURLRequest会拿着上次保存下来了的cookie继续去请求。这个规律甚至适用于ASIHTTPRequest。不管怎么样,当你做一些基于认证的网络请求时,cookie不失为一个完美的解决方案。

IOS的NSHTTPCookiecookie的属性有很多,具体可参考NSHTTPCookie Class Reference

         下面说说如何获得cookie。

查看程序中保存的所有cookie:

NSHTTPCookieStorage *allCookie = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *cookie in [allCookie cookies]) {
   NSLog(@"%@", cookie);
}

  如果要解除绑定,即可以删除相应请求源的cookie即可。ios中如果不想使用已经保存的cookie,那么就可以根据NSURLRequest的NSURL来删除对应的cookie:

NSHTTPCookieStorage *allCookie = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookieArray=[allCookie cookiesForURL:request.URL];//request.URL即为请求的源地址
for(id obj in cookieArray)
{
    [allCookie deleteCookie:obj];
}

  为了安全起见,在浏览所有网站时都不需要cookie,那么可以删除所有的cookie:

NSHTTPCookieStorage *allCookie = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookieArray=[allCookie cookies];//返回保存所有的cookie
for(id obj in cookieArray)
{
    [allCookie deleteCookie:obj];
}

  如果删除了所有的cookie,但是还是想保留一些特定的cookie,可以通过手动来设置cookie:

 NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
  [cookieProperties setObject:@"username" forKey:NSHTTPCookieName];
  [cookieProperties setObject:@"renren" forKey:NSHTTPCookieValue];
  [cookieProperties setObject:@"renren.com" forKey:NSHTTPCookieDomain];
  [cookieProperties setObject:@"renren.com" forKey:NSHTTPCookieOriginURL];
  [cookieProperties setObject:@"/" forKey:NSHTTPCookiePath];
  [cookieProperties setObject:@"0" forKey:NSHTTPCookieVersion];
 
  NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties];
  [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];

  好多关于cookie的东西,需要慢慢的研究!

转自:http://blog.csdn.net/dqjyong/article/details/7801208

原文地址:https://www.cnblogs.com/daocaowu/p/3385869.html