标签: ios4

在iOS应用程序中设计Facebook身份验证,该应用程序也可访问安全的Web服务

目标: 允许用户使用Facebook进行身份验证,进入需要访问我正在运行的受保护Web服务的iOS应用程序.

假设: 对于那些选择不使用Facebook登录的用户,有一个原生身份验证(和注册)系统.

细节:

  • 假设我们希望为用户提供登录Facebook的选项,而无需为我们的系统创建单独的帐户/凭证.
  • 因为我们支持我们自己的本机身份验证机制(用户名和密码),所以我们拥有自己的用户ID,并在初始凭据验证后发出用于后续交互的身份验证令牌.

我很惊讶Facebook在他们的开发者文档中没有这方面的最佳实践.所有现有文档要么假设您正在构建一个网站的FB auth,要么是一个没有需要身份验证的服务的独立移动应用程序.

这是我对如何设计这个问题的初步想法,但是想要验证它是否正确.

  1. 客户端弹出Facebook iOS登录
  2. UI用户使用Facebook凭据登录并获取访问令牌
  3. iOS App将访问令牌传递给我们的服务器
  4. 我们的服务器使用访问令牌与FB图形API进行通信,以(a)验证令牌和(b)获取该访问令牌的FB用户ID.

    例如,我们的服务器将调用https://graph.facebook.com/me/?access_token=XYZ,它将返回JSON对象中的配置文件信息

  5. 假设它有效,我们的服务器从JSON对象中提取用户ID并检查用户是否已经拥有一个帐户.如果是这样,我们会向客户端发出我们自己的身份验证票据以用于该会话.如果用户没有帐户,我们使用Facebook用户ID创建一个新帐户,分配我们自己的唯一用户ID并发出我们的身份验证票.

  6. 然后,客户端在后续需要身份验证的交互上传回auth票证.

这对我来说似乎是正确的方法,但不确定我是否遗漏了一些疯狂的基本内容并走错了(复杂的)路径.

facebook facebook-graph-api ios4 ios

397
推荐指数
3
解决办法
5万
查看次数

你如何使用NSAttributedString?

多种颜色NSStringNSMutableStrings不可能.所以我听说过一些关于iPad SDK 3.2(或3.2左右)NSAttributedString引入的内容,并且可以在iPhone SDK 4.0 beta版iPhone上获得.

我想要一个有三种颜色的字符串.

我不使用3个单独的NSStrings的原因是因为三个NSAttributedString子串中的每个子串的长度经常变化,所以我更喜欢,不使用任何计算来重新定位3个单独的NSString对象.

如果可以使用NSAttributedString我如何进行以下操作 - (如果不能使用NSAttributed字符串,你会怎么做):

替代文字

编辑: 请记住,@"first",@"second"@"third"会在任何时间其他字符串替换.因此,使用硬编码的NSRange值将不起作用.

textcolor nsattributedstring ios4 ios

305
推荐指数
7
解决办法
23万
查看次数

我们如何以编程方式检测运行设备的iOS版本?

我想检查用户是否在低于5.0的iOS上运行应用程序并在应用程序中显示标签.

如何以编程方式检测用户设备上运行的iOS?

谢谢!

iphone cocoa-touch objective-c ios4 ios

288
推荐指数
7
解决办法
21万
查看次数

如何在我的iPhone应用程序中使用NSError?

我正在努力捕获我的应用程序中的错误,我正在研究使用NSError.我对如何使用它以及如何填充它感到有些困惑.

有人可以提供一个关于我如何填充然后使用的例子NSError吗?

iphone objective-c nserror ios4 ios

226
推荐指数
5
解决办法
13万
查看次数

处理applicationDidBecomeActive - "视图控制器如何响应应用程序变为活动状态?"

UIApplicationDelegate在我的主AppDelegate.m类中有协议,applicationDidBecomeActive定义了方法.

我想在应用程序从后台返回时调用方法,但该方法在另一个视图控制器中.如何检查applicationDidBecomeActive方法中当前显示的视图控制器,然后调用该控制器中的方法?

iphone multitasking uiapplicationdelegate ios4 ios

172
推荐指数
8
解决办法
8万
查看次数

升级到Xcode 4后出现缺少文件警告

我最近升级到Xcode 4(这是一个很棒的升级),但现在我收到了一些我以前没有得到过的警告.我查看了论坛和其他SO帖子,但没有遇到如何解决这个问题.

我收到的警告是丢失文件的项目级警告.正在显示的文件已从项目导航器视图中删除(也选择从文件系统中删除).但是,它似乎仍以某种方式显示为与项目相关联,即使该文件不再出现在Project导航器中.

我环顾四周,没有找到如何告诉Xcode这些文件已经消失,停止给我警告.这是我在Xcode4中获得的截图,但从未进入过Xcode 3.

缺少文件警告Xcode 4

xcode ios4 xcode4

165
推荐指数
6
解决办法
7万
查看次数

何时使用enumerateObjectsUsingBlock vs.

除了明显的差异:

  • 使用enumerateObjectsUsingBlock时,你既需要索引和对象
  • enumerateObjectsUsingBlock当你需要修改局部变量时不要使用(我错了,见bbum的答案)

enumerateObjectsUsingBlock普遍认为是好还是坏的时候for (id obj in myArray)也将工作?有哪些优点/缺点(例如性能或多或少)?

multithreading objective-c ios4 objective-c-blocks

150
推荐指数
4
解决办法
6万
查看次数

试图了解CMTime和CMTimeMake

1)CMTimeMake(1,10)表示1秒的持续时间和10或10帧/秒的时标.这意味着1帧视频的持续时间为10帧?

2)

CMTime lastTime=CMTimeMake(1,10);
CMTime frameTime=CMTimeMake(1, 10);
CMTime currentTime=CMTimeAdd(lastTime, frameTime)
Run Code Online (Sandbox Code Playgroud)

=(2,10)?

2秒的视频和每秒10帧的当前时间?

video ios4

141
推荐指数
4
解决办法
7万
查看次数

为什么在iOS中使用前导下划线重命名合成属性?

可能重复:
cocoa objective-c类中变量前面的下划线如何工作?

在Xcode 4中创建新项目时,样板代码在将实现文件中的ivars合成为时,会添加下划线字符:

@synthesize window = _window;
Run Code Online (Sandbox Code Playgroud)

要么:

@synthesize managedObjectContext = __managedObjectContext;
Run Code Online (Sandbox Code Playgroud)

有人能告诉我这里完成了什么吗?我不是一个完整的润滑剂,但这是客观的一个方面 - 我不明白.

另一个困惑点; 在app委托实现中,在如上所述合成窗口iVar之后,在应用程序didFinishLaunchingWithOptions:方法中,使用self引用窗口和viewController ivars:

self.window.rootViewController = self.viewController
[self.window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)

但是在dealloc方法中它是_window或_viewController

谢谢

coding-style objective-c ios4

126
推荐指数
3
解决办法
4万
查看次数

没有找到合适的申请记录

我创建了一个App Store存档文件.在验证期间,它会使用以下消息引发错误

请确保您已在iTunes Connect上为此应用程序设置了记录.

app-store ios4 ios

118
推荐指数
3
解决办法
5万
查看次数