Facebook webView

@interface LoginViewController : UIViewController<UIWebViewDelegate>@property(nonatomic,retain)UIWebView *webview;@property (nonatomic, retain) NSString *accessToken;@property(nonatomic,retain)UIActivityIndicatorView  *FbActive;@[email protected] LoginViewController ()@[email protected] [email protected] accessToken,webview,FbActive;- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;}- (void)viewDidLoad{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

   //Removeing the UIWebview Cookies 
    NSHTTPCookie *cookie;
    NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (cookie in [storage cookies]) {
        [storage deleteCookie:cookie];
    }
    [[NSUserDefaults standardUserDefaults] synchronize];}-(IBAction)fbLoginPage:(UIButton *)sender1{

    NSString   *facebookClientID =facebookAppId;
    NSString   *redirectUri = @"http://www.facebook.com/connect/login_success.html";
    NSString  *[email protected]"user_photos,user_videos,publish_stream,offline_access,user_checkins,friends_checkins,email";

    NSString *url_string = [NSString stringWithFormat:@"https://graph.facebook.com/oauth/authorize?client_id=%@&redirect_uri=%@&scope=%@&type=user_agent&display=touch", facebookClientID, redirectUri, extended_permissions];
    NSURL *url = [NSURL URLWithString:url_string];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    CGRect webFrame =[self.view frame];
    webFrame.origin.y = 0;
    UIWebView *aWebView = [[UIWebView alloc] initWithFrame:webFrame];
    [aWebView setDelegate:self];
    self.webview = aWebView;
    self.FbActive = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    self.FbActive.color=[UIColor darkGrayColor];
    self.FbActive.center = CGPointMake(self.view.frame.size.width / 2, self.view.frame.size.height / 2);
    [self.FbActive startAnimating];

    [webview loadRequest:request];
    [self.webview addSubview:self.FbActive];
    [self.view addSubview:webview];}- (void)webViewDidFinishLoad:(UIWebView *)_webView {

    /**
     * Since there‘s some server side redirecting involved, this method/function will be called several times
     * we‘re only interested when we see a url like:  http://www.facebook.com/connect/login_success.html#access_token=..........
     */

    //get the url string
     [self.FbActive stopAnimating];
    NSString *url_string = [((_webView.request).URL) absoluteString];

    //looking for "access_token="
    NSRange access_token_range = [url_string rangeOfString:@"access_token="];

    //looking for "error_reason=user_denied"
    NSRange cancel_range = [url_string rangeOfString:@"error_reason=user_denied"];

    //it exists?  coolio, we have a token, now let‘s parse it out....
    if (access_token_range.length > 0) {

        //we want everything after the ‘access_token=‘ thus the position where it starts + it‘s length
        int from_index = access_token_range.location + access_token_range.length;
        NSString *access_token = [url_string substringFromIndex:from_index];

        //finally we have to url decode the access token
        access_token = [access_token stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        //remove everything ‘&‘ (inclusive) onward...
        NSRange period_range = [access_token rangeOfString:@"&"];

        //move beyond the .
        access_token = [access_token substringToIndex:period_range.location];

        //store our request token....
        self.accessToken = access_token;

        //remove our window//      UIWindow* window = [UIApplication sharedApplication].keyWindow;//      if (!window) {//          window = [[UIApplication sharedApplication].windows objectAtIndex:0];//      }

        [self.webview removeFromSuperview];
         self.webview=nil;

        //tell our callback function that we‘re done logging in :)
        //      if ( (callbackObject != nil) && (callbackSelector != nil) ) {
        //          [callbackObject performSelector:callbackSelector];
        //      }

        //the user pressed cancel

    }
    else if (cancel_range.length > 0)
    {
        //remove our window//      UIWindow* window = [UIApplication sharedApplication].keyWindow;//      if (!window) {//          window = [[UIApplication sharedApplication].windows objectAtIndex:0];//      }

        [self.webview removeFromSuperview];
        self.webview=nil;

        //tell our callback function that we‘re done logging in :)
        //      if ( (callbackObject != nil) && (callbackSelector != nil) ) {
        //          [callbackObject performSelector:callbackSelector];
        //      }

    }
    [self getuserdetailes];}-(void)getuserdetailes{
    NSString *[email protected]"me";

    NSString *url_string = [NSString stringWithFormat:@"https://graph.facebook.com/%@?", action];

    //tack on any get vars we have...

    NSDictionary *get_vars=nil;

    if ( (get_vars != nil) && ([get_vars count] > 0) ) {

        NSEnumerator *enumerator = [get_vars keyEnumerator];
        NSString *key;
        NSString *value;
        while ((key = (NSString *)[enumerator nextObject])) {

            value = (NSString *)[get_vars objectForKey:key];
            url_string = [NSString stringWithFormat:@"%@%@=%@&", url_string, key, value];

        }//end while
    }//end if

    if (accessToken != nil)
    {

        //now that any variables have been appended, let‘s attach the access token....
        url_string = [NSString stringWithFormat:@"%@access_token=%@", url_string, self.accessToken];
        url_string = [url_string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        NSLog(@"%@",url_string);
        NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url_string]];

        NSError *err;
        NSURLResponse *resp;
        NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:&resp error:&err];
        NSString *stringResponse = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
        NSLog(@"%@",stringResponse);
        NSError* error;
        NSDictionary *FBResResjson = [NSJSONSerialization
                                      JSONObjectWithData:response//1
                                      options:kNilOptions
                                      error:&error];
            NSLog(@"%@",FBResResjson);

    }}
时间: 2024-10-11 15:16:06

Facebook webView的相关文章

android webview远程调试

H5的调试的方式一般用chrome的emulator就好,可是遇到APP就拙计了.这时候还得用远程调试,远程调试很给力,不过目前网上还没有好的文章讲解,要好好的把其配置下来还是非常有难度的,今天折腾了半天,终于弄好,分享一下 配置需求 话说其配置也是非常有考究的,和ios开发一样,都是有门槛的货,告诉大家屌丝误入,不过这个条件作为屌丝的我也算是打了擦边球,唯一要求就是android系统要4.0以上才支持 app代码 如果需要调试那么,代码中一定要先在,apk生成前的开发包中的manifest.x

【React Native开发】React Native控件之WebView组件详解以及实例使用(22)

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50676379 本文出自:[江清清的博客] (一)前言 [好消息]个人网站已经上线运行,后面博客以及技术干货等精彩文章会同步更新,请大家关注收藏:http://www.lcode.org 今天我们一起来看一下WebView组件讲解以及使用实例 刚创建的React Native技术交流群(282693535),欢迎各位大牛,React Native技术爱好者加入交流!同

在Android中使App高速、简单地支持新浪微博、微信、QQ、facebook等十几个主流社交平台的分享功能

前言 在如今的APP或者游戏中,分享功能差点儿已经成为标配.分享功能不但能够满足用户的需求.也能够为产品带来很多其它的用户,甚至能够对用户的行为.活跃度.年龄段等情况进行数据统计,使得软件公司能够对产品进行更精准的定位.今天我们就来简单剖析市场上一款优秀的分享SDK以及其集成过程.这款分享SDK就是友盟的社会化分享组件. 友盟社会化分享,帮助移动应用高速具备分享.登录.评论.喜欢等社交功能,提升用户粘度.助力产品推广,并提供实时.全面的社会化数据统计分析服务. 很多其它请訪问友盟社会化组件官网.

iOS开发周报:新一代 iPhone 可能取消耳机插口,Facebook 发布 tvOS SDK

新一代 iPhone 可能为进一步降低机身厚度而取消耳机插口,改用 Lightning 接口.iPhone 6c 传言,2016 年可能迎来两次 iPhone 发布会. 新闻 新一代 iPhone 可能取消耳机插口,改用 Lightning 接口:虽然距离下一代 iPhone 发售还遥遥无期,但是最近已经有关于这款 “iPhone 7” 的一些传言了.据称新一代 iPhone 为了进一步降低机身厚度,将淘汰掉现在事实的耳机行业标准的 3.5mm 耳机几口.耳机接口成为机身厚度的瓶颈已经有一段时间

移动应用跨平台框架江湖将现终结者?速来参拜来自Facebook的React Native

React Native使用初探 February 06 2015 Facebook让所有React Conf的参与人员都可以初尝React Native的源码---一个编写原生移动应用的方法.该方法运用了React.js的所有强大的功能来将其应用到原生应用.你可以通过使用其内嵌的基本元素来编写基于Javascript的组件,这些组件都是拥有着iOS和Android控件的支撑的. 首先,我知道Facebook现在还没有完全将其开源是个很挫的事情啦,但他们现在正在将该项目往开源的方向推进了.他们现

Facebook

Facebook登录为iOS Facebook的SDK为iOS提供了各种登录的经验,你的应用程序可以使用它来 ??验证一个人.这份文件包括了所有你需要知道,以落实Facebook登录在你的iOS应用程序的信息.如果您想了解更多关于Facebook登录一般而言,为什么你可能想使用它,你可以在我们这样做的登录门户. 有两种方式可以实现Facebook登录在你的iOS应用方法:使用Facebook的登录按钮,或者实现你使用API调用自定义登录界面.我们将介绍这两个步骤一步的教程,包括示例代码和示例应用

【原创】浅谈webview(一)——惊鸿一瞥

众所周知,APP开发过程中经常会通过webview实现HTML5(H5)的渲染,实现H5和Native的混合开发(Hybrid Development).Hybrid Development可以加速开发效率,实现版本的快速迭代,可以实现开发的解耦,丰富开发资源的使用.但是APP通过webview嵌套H5资源同样有绕不开的问题,比如说: 功能性问题,在APP上H5的体验效果跟Native之间还是有不小的差距: 性能性问题: 流量消耗:使用H5实现资源的渲染,访问资源的时候需要消耗大量的流量,对用户

利用FaceBook实现第三方登陆(自定义登陆按钮,非官方按钮)并获取用户数据

最近公司要写集成登陆SDK,具体集成那些我就不说了,其中就包含需要使用facebook登陆自己的app,于是我苦心研究facebook,写完后发现各种问题,对于问题我当然去查阅官方文档看怎么解决,结果一查,我的天,SDK更新了,以前是两种方式loginButton和UserSettingsFragment,而对于两种方式来说都不适合我,因为我要写sdk供别人使用,所以别人要用那种登陆按钮需要用户自己定义,而不是用facebook自己的.对于两种方式来说,由于第二种不需要开发者参与,布局按钮都是f

在Android中使App快速、简单地支持新浪微博、微信、QQ、facebook等十几个主流社交平台的分享功能

前言 在现在的APP或者游戏中,分享功能几乎已经成为标配.分享功能不但能够满足用户的需求,也能够为产品带来更多的用户,甚至可以对用户的行为.活跃度.年龄段等情况进行数据统计,使得软件公司可以对产品进行更精准的定位.今天我们就来简单剖析市场上一款优秀的分享SDK以及其集成过程,这款分享SDK就是友盟的社会化分享组件. 友盟社会化分享,帮助移动应用快速具备分享.登录.评论.喜欢等社交功能,提升用户粘度.助力产品推广,并提供实时.全面的社会化数据统计分析服务. 基本概念 根据友盟的集成文档,我们对于友