如何在iOS的OAuth 2.0中硬编码登录凭据



我正在使用oauth 2.0的SoundCloud SDK,我只是希望我的iOS应用程序的用户将录音上传到我的SoundCloud帐户。是否有一种方法可以硬编码我的用户名和密码?我不想做一个用户必须登录的登录屏幕。我搜索了一下,但我找不到任何东西,因为OAuth 2.0允许用户在不泄露用户名和密码的情况下授权应用程序。任何帮助都很感激,谢谢!

在应用程序中不应该这样做,原因有很多。例如,当您想要或需要更改密码时会发生什么?现在你必须向App Store提交一个新版本,并希望所有用户都能升级。

我的建议是将所有soundcloud上传调用移动到服务器端解决方案,并保留您的凭据

这是一个违背封装的粗略解决方案,所以它可能不是最好的方法,但我也找不到任何具体的文档。

在你的AppDelegate中,除了"SCSoundCloud.h"之外,还要导入"NXOAuth2AccountStore.h"one_answers"SCConstants.h"

[[NXOAuth2AccountStore sharedStore]
requestAccessToAccountWithType:kSCAccountType
username:@"yourUsername"
password:@"yourPassword"];

实现getTracks方法,如SoundCloud iOS SDK文档中所示,但按如下方式处理jsonResponse:

    if (!jsonError && [jsonResponse isKindOfClass:[NSArray class]]) {
        self.tracksArray = [[NSArray alloc] initWithObjects:jsonResponse, nil];
        NSLog(@"json response is %@", jsonResponse);
        [self.tableView reloadData];
    }

在tableView方法中,我从self中获取异常错误。tracksArray属性。这可能是在使用loginViewController的原始处理程序中考虑到的。你可以通过在self。tracksarray上调用firstObject来修复它。我相信一定有更好的办法。

您可以使用NSMutableString s在运行时构建您的用户名和密码,这样它们在应用程序二进制文件中就不可见了。例子:

@property (nonatomic, strong) NSMutableString *username;
@property (nonatomic, strong) NSMutableString *password;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [self setupCreds];
    return YES;
}
- (void)setupCreds
{
    self.username = [[NSMutableString alloc]init];
    [self.username appendString:@"u"];
    [self.username appendString:@"s"];
    [self.username appendString:@"e"];
    [self.username appendString:@"r"];
    self.password = [[NSMutableString alloc]init];
    [self.password appendString:@"p"];
    [self.password appendString:@"w"];
    [self.password appendString:@"d"];
}

最新更新