zoukankan      html  css  js  c++  java
  • 【转】 如何绑定或者解除绑定微博和人人帐号

               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

  • 相关阅读:
    Net core 关于缓存的实现
    2018年自己的技术心得
    DataSet
    弹错:正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码
    c#中结构与类的区别
    TEQC使用说明
    TEQC软件及使用方法
    <深度工作>笔记
    Gtest学习系列三:断言
    Gtest学习系列二:Gtest基本介绍
  • 原文地址:https://www.cnblogs.com/daocaowu/p/3385869.html
Copyright © 2011-2022 走看看