小编Den*_*nis的帖子

在自己的服务器上使用facebook iOS客户端授权

我在我的iOS应用程序中使用facebook SSO并且工作正常.现在我想在我的服务器后端使用那些信息 - 用户用他的uid验证用户身份.但是我怎样才能 - 安全地 - 将这些信息传递给服务器?

我的猜测是,我需要发送uid,可能还有我从facebook到我的服务器的authToken?有人可以勾勒出一般的方法吗?

即使它对我的问题不重要,我的服务器正在运行rails并设计用于身份验证.我也有facebook登录单独工作,但我想使用服务器上客户端已经完成的身份验证.混乱...

authentication facebook ruby-on-rails devise ios

17
推荐指数
1
解决办法
6470
查看次数

UIView阴影和InterfaceBuilder

我想使用CALayer将阴影添加到UI(图像)视图.以下代码通常很好

previewImage.layer.shadowColor = [[UIColor blackColor] CGColor];
previewImage.layer.shadowOffset = CGSizeMake(1.0f, 1.0f);
previewImage.layer.shadowOpacity = 1.0f;
previewImage.layer.shadowRadius = 8.0f;
Run Code Online (Sandbox Code Playgroud)

但是,这仅在我以编程方式创建该视图并将其作为子视图添加到主视图时才有效.当在InterfaceBuilder中设置该视图并将其定义为IBOutlet UIImageView时,这不起作用.没有阴影出现.那我在这里错过了什么?

core-graphics interface-builder ios

15
推荐指数
3
解决办法
1万
查看次数

即使没有IV,CCCrypt在AES CBC中解密也能正常工作

我有一个令人困惑的问题,解密使用CCCrypt的AES-CBC模式加密的文件和随机的16字节IV产生完全相同的输出,无论我传入相同的正确IV用于加密还是根本没有.

我的期望:使用NULL IV进行解密不应导致正确的解密.我观察到:使用NULL IV会产生与用于加密的IV相同的结果.

下面为了完整起见,这里是重要的代码片段,iv以16字节安全随机化的NSData传递.

我在这里不理解什么?CCCrypt是否以某种方式从加密数据中找出IV本身?我在文档中找不到任何相关内容.

- (NSData *)encryptedDataForData:(NSData *)rawData
                         withKey:(NSData *)key
                              iv:(NSData *)iv
                           error:(NSError __autoreleasing**)error
{
    size_t outLength;
    NSMutableData *cipherData = [NSMutableData dataWithLength:rawData.length + kAlgorithmBlockSize];

    CCCryptorStatus result = CCCrypt(kCCEncrypt,
                                     kCCAlgorithmAES128,
                                     kCCOptionPKCS7Padding | kCCModeCBC,
                                     key.bytes,
                                     key.length,
                                     iv.bytes,
                                     rawData.bytes,
                                     rawData.length,
                                     cipherData.mutableBytes,
                                     cipherData.length,
                                     &outLength);
    if (result == kCCSuccess) {
        cipherData.length = outLength;
        return cipherData;
    } else {
        return nil;
    }
}

- (NSData *)decryptedDataForData:(NSData *)encryptedData withKey:(NSData *)key error:(NSError __autoreleasing**)error
{
    size_t outLength;
    NSMutableData *decryptedData = [NSMutableData dataWithLength:encryptedData.length];

    // this line …
Run Code Online (Sandbox Code Playgroud)

cryptography objective-c commoncrypto

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

ruby / rails布尔方法命名约定

我对ruby / rails方法的命名约定或良好实践有一个简短的问题。请考虑以下方法:

# some methods performing some sort of 'action'
def action; end
def action!; end

# some methods checking if performing 'action' is permitted
def action?; end
def can_action?; end
def action_allowed?; end
Run Code Online (Sandbox Code Playgroud)

因此,我想知道,三种“与”方法中的哪一种是寻求许可的“最佳”方法。我会以某种方式选择第一个,但是在某些情况下,我认为这可能与含义混淆has_performed_action?。因此,第二种方法可能使这一点更清晰,但也有些冗长。第三个实际上只是为了完整性。我真的不喜欢那个。

那么,有没有为此达成共识的良好做法?

ruby methods ruby-on-rails naming-conventions

3
推荐指数
1
解决办法
4547
查看次数

Objective-C访问类里面的类方法

在实例方法中,我可以引用实例的类[self class],所以我不必[MyClass class]显式编写.

如何在类方法中实现等效?self在这方面显然没有明确的......

metaprogramming objective-c

3
推荐指数
1
解决办法
536
查看次数

RestKit willMapData:

以下代码从我的服务器接收JSON响应,该响应由一系列元素组成,每个元素都有一个'created_at'和'updated_at'键.对于所有这些元素,我想删除为这两个键设置的字符串中的单个字符(冒号).

- (void)objectLoader:(RKObjectLoader*)loader willMapData:(inout id *)mappableData {
    // Convert the ISO 8601 date's colon in the time-zone offset to be easily parsable
    // by Objective-C's NSDateFormatter (which works according to RFC 822).
    // Simply remove the colon (:) that divides the hours from the minutes:
    // 2011-07-13T04:58:56-07:00 --> 2011-07-13T04:58:56-0700 (delete the 22nd char)
    NSArray *dateKeys = [NSArray arrayWithObjects:@"created_at", @"updated_at", nil];
    for(NSMutableDictionary *dict in [NSArray arrayWithArray:(NSArray*)*mappableData])
    for(NSString *dateKey in dateKeys) {
        NSString *ISO8601Value = (NSString*)[dict valueForKey:dateKey];
        NSMutableString *RFC822Value = [[NSMutableString alloc] …
Run Code Online (Sandbox Code Playgroud)

objective-c restkit

3
推荐指数
1
解决办法
2198
查看次数

如何用backBarButtonItem替换leftBarButtonItem

在Interface Builder中,我创建了一个视图,作为Storyboard的一部分,过去只在一个不同的上下文中显示(作为UITabBarController的视图).

现在我想重用此视图作为UINavigationController视图的一部分,但通常可以正常工作.唯一的问题是在IB中,我将一个按钮设置为leftBarButtonItem.因此,当我在导航控制器的堆栈上推送相同的视图Controller时,它将不再自动放置backBarButtonItem.

有没有一种标准的方法来处理这种情况?我是否必须自己删除按钮,具体取决于viewcontroller是否是UITabBarController或UINavigationController的一部分?我想在IB中保留按钮.因此,在viewDidDisappear上将leftBarButtonItem设置为nil,例如只有一些帮助.这确实正确地显示了backBarButtonItem,但是当用户返回到该屏幕时,我将不得不再次手动设置leftBarButtonItem.

uinavigationcontroller ios

1
推荐指数
1
解决办法
2754
查看次数

尽管有正确的许可,但没有获得Facebook用户

我在我的应用程序(SDK 3.5)中登录了facebook并希望获得用户的电子邮件.这是我的"核心"登录代码,我相信我正在设置要求的正确权限:

NSArray *permissions = [NSArray arrayWithObjects:@"email", @"user_location", nil];

[FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:YES completionHandler:
 ^(FBSession *session, FBSessionState state, NSError *error) {
     // some code here
 }];
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试从他们/我的数据中读取用户电子邮件时,它实际上适用于大多数用户.除了一些,我仍然没有收到电子邮件.

我在这里错过了什么吗?我想当用户授予此请求时,我总是会收到一个电子邮件地址(即使它是匿名电子邮件).或者只是一个Facebook设置,用户可以完全关闭它?

facebook ios

0
推荐指数
1
解决办法
2040
查看次数