在ios中通过社交框架登录Facebook

2024-05-08

我是 iOS 开发新手。我必须将 Facebook 登录集成到我的 iOS 应用程序中,当用户登录时,它会获取所有信息并将其导航到主屏幕。我已经通过 Facebook 最新的 SDK 完成了此操作,但我希望通过社交框架完成此操作。我浏览了很多在线内容,还发现了一些例子,他们通过社交框架在 Facebook 页面(墙)上共享(发布)内容,但不完全是 Facebook 登录。请任何人帮忙,让我知道是否可以通过社交框架登录 Facebook,或者我必须坚持使用 SDK。提前致谢


导入社交和帐户框架

将此代码放入您的 .m 文件中

-(void)facebook
{
    self.accountStore = [[ACAccountStore alloc]init];
    ACAccountType *FBaccountType= [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

    NSString *key = @"451805654875339";
    NSDictionary *dictFB = [NSDictionary dictionaryWithObjectsAndKeys:key,ACFacebookAppIdKey,@[@"email"],ACFacebookPermissionsKey, nil];

    [self.accountStore requestAccessToAccountsWithType:FBaccountType options:dictFB completion:
     ^(BOOL granted, NSError *e) {
         if (granted)
         {
             NSArray *accounts = [self.accountStore accountsWithAccountType:FBaccountType];
             //it will always be the last object with single sign on
             self.facebookAccount = [accounts lastObject];


             ACAccountCredential *facebookCredential = [self.facebookAccount credential];
             NSString *accessToken = [facebookCredential oauthToken];
             NSLog(@"Facebook Access Token: %@", accessToken);


             NSLog(@"facebook account =%@",self.facebookAccount);

             [self get];

             [self getFBFriends];

             isFacebookAvailable = 1;
         } else
         {
             //Fail gracefully...
             NSLog(@"error getting permission yupeeeeeee %@",e);
             sleep(10);
             NSLog(@"awake from sleep");
             isFacebookAvailable = 0;

         }
     }];



}

-(void)checkfacebookstatus
{
    if (isFacebookAvailable == 0)
    {
        [self checkFacebook];
        isFacebookAvailable = 1;
    }
    else
    {
        printf("Get out from our game");
    }
}


-(void)get
{

    NSURL *requestURL = [NSURL URLWithString:@"https://graph.facebook.com/me"];

    SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook requestMethod:SLRequestMethodGET URL:requestURL parameters:nil];
    request.account = self.facebookAccount;

    [request performRequestWithHandler:^(NSData *data, NSHTTPURLResponse *response, NSError *error) {

        if(!error)
        {

            NSDictionary *list =[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

            NSLog(@"Dictionary contains: %@", list );




            self.globalmailID   = [NSString stringWithFormat:@"%@",[list objectForKey:@"email"]];
            NSLog(@"global mail ID : %@",globalmailID);


            fbname = [NSString stringWithFormat:@"%@",[list objectForKey:@"name"]];
            NSLog(@"faceboooookkkk name %@",fbname);




            if([list objectForKey:@"error"]!=nil)
            {
                [self attemptRenewCredentials];
            }
            dispatch_async(dispatch_get_main_queue(),^{

            });
        }
        else
        {
            //handle error gracefully
            NSLog(@"error from get%@",error);
            //attempt to revalidate credentials
        }

    }];

    self.accountStore = [[ACAccountStore alloc]init];
    ACAccountType *FBaccountType= [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

    NSString *key = @"451805654875339";
    NSDictionary *dictFB = [NSDictionary dictionaryWithObjectsAndKeys:key,ACFacebookAppIdKey,@[@"friends_videos"],ACFacebookPermissionsKey, nil];


    [self.accountStore requestAccessToAccountsWithType:FBaccountType options:dictFB completion:
     ^(BOOL granted, NSError *e) {}];

}




-(void)accountChanged:(NSNotification *)notification
{
    [self attemptRenewCredentials];
}

-(void)attemptRenewCredentials
{
    [self.accountStore renewCredentialsForAccount:(ACAccount *)self.facebookAccount completion:^(ACAccountCredentialRenewResult renewResult, NSError *error){
        if(!error)
        {
            switch (renewResult) {
                case ACAccountCredentialRenewResultRenewed:
                    NSLog(@"Good to go");
                    [self get];
                    break;
                case ACAccountCredentialRenewResultRejected:
                    NSLog(@"User declined permission");
                    break;
                case ACAccountCredentialRenewResultFailed:
                    NSLog(@"non-user-initiated cancel, you may attempt to retry");
                    break;
                default:
                    break;
            }

        }
        else{
            //handle error gracefully
            NSLog(@"error from renew credentials%@",error);
        }
    }];
}

还登录您的设备/模拟器中的本机 Facebook 应用程序

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在ios中通过社交框架登录Facebook 的相关文章

  • 如果我的消耗性 IAP 被退款,我会收到任何通知吗?

    我有 Apple iOS 应用程序 其中有很多消耗性 IAP 我非常担心用户购买IAP并使用一段时间后向Apple客服投诉并获得退款 如果我的消耗品 IAP 退款 我会收到任何通知吗 我如何注意到这一点并阻止用户使用 IAP None
  • 无法在 iOS 企业应用程序中连接到 example.com

    我面临着一个严重的问题 我正在尝试使企业应用程序上线 通过使用 BetaBuilder 我按照以下步骤操作 myApp ipa manifest plist index html 清单 plist
  • 相当于 Interface Builder 中 UIButton 的动态类型“自动调整字体”设置?

    UILabel 有一个Dynamic Type Automatically Adjusts FontInterface Builder 属性检查器中的复选框 Interface Builder 中是否有等效项用于自动调整 UIButton
  • iOS:Swift - 如何在触摸时向地图添加精确定位并获取该位置的详细地址?

    我想在 iOS 地图的触摸上添加注释并获取各个位置的详细地址 地标 我如何在 Swift 中实现这一目标 提前致谢 要对地图上的触摸做出反应 您需要为地图视图设置点击识别器 in viewDidLoad let gestureRecogni
  • 径向渐变绘制性能 - OpenGL-ES 可以改进吗?

    我正在开发一个图像处理应用程序 它将径向渐变叠加在从照片库加载的图像上 在屏幕上 我有一个滑块可以动态地增大 减小径向渐变的半径 我发现模拟器上的性能很好 但在 iPhone 3G 或 3GS 上就很糟糕了much移动滑块时重绘速度较慢 我
  • 具有自动布局的 UITableViewCell 中的 UILabel 高度错误

    我有一个UITableView单元格的固定高度为 100 点 这些单元格是在 xib 文件中创建的 该文件使用 3 个约束来固定UILabel到单元格的左 右和上边缘contentView 标签的垂直拥抱优先级设置为 1000 因为我希望单
  • 获取对 iOS 应用程序中最顶层视图/窗口的引用

    我正在创建一个可重用的框架 用于在 iOS 应用程序中显示通知 我希望将通知视图添加到应用程序中其他所有内容的顶部 有点像 UIAlertView 当我初始化监听 NSNotification 事件并添加视图作为响应的管理器时 我需要获取对
  • Swift 闭包作为 AnyObject

    我尝试使用这个方法 class addMethod 在 Obj c 中使用如下 class addMethod self class selector eventHandler imp implementationWithBlock han
  • 迁移到 ARC 时如何解决“选择器'performSelector:withObject:afterDelay:'没有已知的实例方法”?

    ARC 迁移工具在开始迁移之前拒绝接受此代码 self delegate performSelector selector overlayDismissed withObject self afterDelay 0 委托被迫使用协议来实现此
  • 如何自动缩放mapView以显示叠加层

    我可以在 mapView 上绘制多边形 但是我需要找到多边形并手动缩放它 有没有办法自动执行此过程 例如调整中心多边形 我浏览过互联网并阅读了一些相关文章 其中大多数都是基于折线和点的 任何形式的帮助将不胜感激 因为我正在寻找解决方案一段时
  • 无法将“SDWebImageActivityIndi​​cator”类型的值分配给“ST_SDWebImageIndicator”类型?

    I have multiple flavours targets in my Xcode project I am also using SDWebImage in my app Everything was working fine un
  • 使用 NSURLSessionDataTask 显示文件下载进度

    我想显示特定文件的文件下载进度 收到了多少字节 它与 NSURLSessionDownloadTask 配合得很好 我的问题是我想用 NSURLSessionDataTask 实现同样的效果 以下是将文件接收到 NSData 并写入文档文件
  • 私人 iPhone 应用程序?

    我有兴趣编写连接到内部网或外部网的应用程序 换句话说 我想为我的客户制作私人应用程序 但我不希望每个人都能够访问它并能够下载它 您知道是否有一种方法可以将企业应用程序仅分发给特定的人 Android 也做同样的事情吗 The iPhone
  • 如何适配iPhone 4屏幕分辨率?

    根据Apple http www apple com iphone specs html iPhone 4 拥有新的 更好的屏幕分辨率 3 5 英寸 对角线 宽屏多点触控显示屏960 x 640 像素分辨率 326 ppi 这个小细节对我们
  • UIWebView 中的 PDF

    我正在创建一个杂志应用程序 我在 UIWebView 中显示杂志的每一页 不过 Web 视图不会用 PDF 填满屏幕 它周围有一个边界 我怎样才能全屏显示它 我还没有使用 UIWebView 尝试过此操作 但您也许可以执行类似的操作来以编程
  • 在 Flutter 中显示 iOS 的 PDF 内联文件

    我正在 flutter 中专门为 iOS 开发一个应用程序 现阶段 我需要向其中添加 PDF 文件 问题是 flutter 没有原生的方式来显示 PDF 文件 据我研究 由此tread https github com flutter fl
  • iPhone 崩溃日志?

    我已经配置了一部 iPhone 并让用户安装了该应用程序 它失败 是否有崩溃日志可以让我看到 iPhone 上失败的原因 Ian 如果您可以使用 xcode 将 iPhone 连接到计算机 则在管理器窗口中它会显示每个应用程序崩溃的崩溃日志
  • NSURL URLWithString:引发异常

    简而言之 NSURL URLWithString 似乎引发了一个例外 根据文档 如果字符串格式错误 则返回 nil 没有提到在任何情况下都会引发异常 除此之外 我还对 URL 进行编码并检查nil在将字符串转换为 URL 之前 任何人都可以
  • 如何确定iPhone铃声的当前级别?

    我正在使用 AVSystemController 将 iPhone 铃声静音 但我不知道如何确定铃声的当前级别 有任何想法吗 PS 是的 我知道使用 AVSystemController 可能会导致应用程序被 App Store 禁止 这不
  • 用 UIView 像翻书一样翻页?

    我正在尝试在之间切换UIViews让它看起来就像你正在翻书的一页 The UIViewAnimationTransitionCurlUp如果我能让它向左或向右卷曲 那就非常接近了 这可能吗 我尝试过使用CATRansition但没有一种动画

随机推荐

  • 如何在浏览器验证带有“必填”属性的字段后禁用提交按钮?

    我们使用以下 jQuery 来禁用提交按钮 以防止重复提交 服务器速度慢 jQuery document ready function SENDE BTN INAKTIV STELLEN input type submit click fu
  • Maven 管理的 Java EE 应用程序中 JBoss 提供的库

    这对我来说实际上不太可能 但网上似乎没有关于将 JBoss 提供的依赖项导入 Maven 管理的 Java EE 应用程序以在其中部署的直接答案 据我所知 有两件事与这个问题有关 那就是jboss as client外部 就 JVM 而言
  • 防止刷新时提交双重表单

    我有一个简单的问题 我知道当用户使用 Post Redirect Get 模式重新加载页面时 我可以防止表单重新提交自身 但我的问题是 如果我将用户重定向回提交表单的同一页面 这种模式是否有效 我的意思是 我不想将用户重定向到另一个页面 请
  • 无法通过 SSH 连接到 EC2 实例

    因此 我从网上启动了我的实例 下载了密钥对并安装了它 大约一天的时间里一切都运行良好 然后我重新启动了计算机 但我无法再通过 SSH 连接到它 我尝试重新下载密钥对并重新安装它 但我不断收到 权限被拒绝 公钥 错误 这是详细的输出 我也尝试
  • Snap-confine 具有提升的权限,并且不受限制,但应该受到限制。拒绝继续避免权限升级攻击

    我已经使用 snap 一段时间了 但最近升级后 当我尝试打开任何应用程序时 出现此错误 Snap confine has elevated permissions and is not confined but should be Refu
  • 有皮茨时区列表吗?

    我想知道 Python 库 pytz 中时区参数的所有可能值是什么 怎么做 您可以列出所有可用的时区pytz all timezones In 40 import pytz In 41 pytz all timezones Out 42 A
  • 在 Django 中为多个查询编写视图的最佳方法?

    这是一个简单的问题 我已经组织了我的模型 以便提供给页面的大多数对象都属于一种类型 项目 该模型包含各种属性 可以帮助我以不同的方式提供服务 我有文章和视频 它们由模型上的 类型 字段确定 类型 文章 等 我有一个列表视图 它显示项目模型中
  • Tomcat 8 上的 PHP

    我找到了很多如何让 PHP 在 Tomcat 上运行的指南 但都是以前的版本 我尝试了所有这些 但我所能显示的只是一个空白页面 并且代码仍然没有被触发 我知道 Tomcat 是为 Java 应用程序而不是 PHP 构建的 但我需要找到一种使
  • 编写潜在并发问题的证明

    我正在阅读 Java 并发实践 并尝试编写一段代码来表明第 3 5 1 章中作为示例提供的类确实会引入问题 public class Holder public int n public Holder int n this n n publ
  • Nuget:指定依赖项而不添加引用

    我有一个包 例如 MyStuff Data 需要 EntityFramework 和其他 才能工作 但仅限于内部 我不希望每个使用 MyStuff Data 的项目也引用 EntityFramework 以及所有其他项目 但 dll 始终需
  • PHP数组删除重复的键值并仅显示一个

    Array 0 gt Array user id gt 78 post id gt 3 post user added id gt 2 1 gt Array user id gt 76 post id gt 8 post user adde
  • 将对象列表打印到控制台

    我创建了一个带有 Listobj 对象类型的列表 并向对象添加了一组值 如何以年龄增长的方式从 newlist 中打印 Listobj 对象 class Listobj int age string name public int Age
  • “psycopg2 的构建轮子失败” - 使用 virtualenv 和 pip 的 MacOSX

    我第一次尝试与其他几个人一起制作一个网站 在尝试使用 Django Python VirtualEnv 时遇到了一个奇怪的错误 我已经找到了针对其他操作系统 例如 Ubuntu 的此问题的解决方案 但找不到针对 Mac 的任何好的解决方案
  • ES6 Promise.all 进度

    在进一步行动之前 我有几个需要解决的承诺 Promise all promises then results gt going further 有什么办法可以让我取得进展吗 Promise all承诺 从文档看来 这不可能 https de
  • 为什么元组类型的列表元素的值不能修改?

    在 C 8 0 中 我可以通过访问字段名称直接修改元组内的值 string name int score student Tom 100 student name Jack Console WriteLine student 我可以修改列表
  • 实体框架是否支持 SQLClient 连接字符串中的 ApplicationIntent=ReadOnly

    实体框架是否支持应用程序意图 只读 http msdn microsoft com en us library hh205662 aspx在 SQLClient 连接字符串中 它是参考对可用性副本的只读访问 http msdn micros
  • 使用 ffmpeg 提取帧的最快方法?

    您好 我需要使用 ffmpeg 从视频中提取帧 有没有比这更快的方法 ffmpeg i file mpg r 1 1 filename 03d jpg 如果 JPEG 编码步骤对性能要求太高 您可以始终将未压缩的帧存储为 BMP 图像 ff
  • 捕获所有内部异常详细信息的最佳实践是什么? [复制]

    这个问题在这里已经有答案了 记录完整异常详细信息 包括所有可能的内部异常 的最佳实践是什么 目前 我使用以下代码 try some code that throws an exception catch Exception ex do Co
  • kotlin中的三元运算符[重复]

    这个问题在这里已经有答案了 我可以用java写 int i 10 String s i 10 Ten Empty 即使我可以将它传递到方法参数中 callSomeMethod i 10 Ten Empty 如何将其转换为 kotlin 在
  • 在ios中通过社交框架登录Facebook

    我是 iOS 开发新手 我必须将 Facebook 登录集成到我的 iOS 应用程序中 当用户登录时 它会获取所有信息并将其导航到主屏幕 我已经通过 Facebook 最新的 SDK 完成了此操作 但我希望通过社交框架完成此操作 我浏览了很