27

多年来,我一直在尝试在我的 iPhone 应用程序中集成 OAuth 2.0。

我已经搜索并搜索了库、教程等……但它们都将我带入了死胡同。我遇到的主要问题是他们要么有已弃用的代码,要么他们只是不工作,或者他们有一些文档,但真的很难遵循(无论如何对我来说......)。

我能为 Xcode 找到的最好的 OAuth2 库是这个:https ://github.com/nxtbgthng/OAuth2Client

但是那个的主要问题是它似乎没有做任何事情......我已经遵循了它附带的所有文档和说明,但是在构建和运行之后,它似乎没有进行身份验证......

所以我想我的主要问题是:有没有人知道任何好的和最新的 Xcode 的 OAuth 2.0 教程或任何类似的库?

因为我现在真的很挣扎.... :(

谢谢你的时间,丹。

更新 2:这是我的代码(为安全起见,删除了 App Id 和秘密):

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

oauthClient = [[LROAuth2Client alloc]
               initWithClientID:@"MY_CLIENT_ID"
               secret:@"MY_APP_SECRET"
               redirectURL:[NSURL URLWithString:@"app://instagram-callback/?code="]];
oauthClient.delegate = self;

oauthClient.userURL  = [NSURL URLWithString:@"https://api.instagram.com/oauth/authorize/?client_id=ab6dc96859bf43b3a488199ec72d9964&redirect_uri=app://instagram-callback/?code=&response_type=code"];
oauthClient.tokenURL = [NSURL URLWithString:@"https://api.instagram.com/oauth/access_token/"];


[oauthClient authorizeUsingWebView:myWebView];


}

- (void)oauthClientDidReceiveAccessToken:(LROAuth2Client *)client;
{
    LROAuth2AccessToken *token = client.accessToken;
    [NSKeyedArchiver archiveRootObject:token toFile:@"Path/To/MyAccessToken"];
}

- (void)checkAccessTokenForExpiry:(LROAuth2AccessToken *)accessToken;
{
    if ([accessToken hasExpired]) {
        [oauthClient refreshAccessToken:accessToken];
    }
}

- (void)oauthClientDidRefreshAccessToken:(LROAuth2Client *)client;
{
    LROAuth2AccessToken *token = client.accessToken;
    [NSKeyedArchiver archiveRootObject:token toFile:@"Path/To/MyAccessToken"];
}
4

5 回答 5

5

在几乎所有项目中我都使用过 AFNetworking,因为它非常强大——为什么每次都重新发明轮子 :)

此外,它还有一个OAuth2Manager,它非常容易实现并且工作稳定。

于 2015-08-10T11:48:11.950 回答
0

Instagram 文档中说有两种验证方式。一个显式(用于服务器端身份验证)和一个隐式,用于客户端中的身份验证(无服务器)。

您在应用程序中使用 Explicit ,尝试更改userURLtohttps://instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=tokentokenURLto http://your-redirect-uri#access_token=ACCESS-TOKEN

于 2015-04-21T11:59:10.243 回答
0

您很可能无法在 iPhone 应用程序中使用客户端密码(因为无法保护客户端密码),您需要通过服务移动应用程序或移动网站进行身份验证,然后根据我在此找到的链接处理重定向 URL Uber api 开发者网站: http ://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified

此页面上有一些代码可以做到这一点,我现在正在测试: https ://medium.com/swift-programming/learn-nsurlsession-using-swift-ebd80205f87c

此页面底部还有一些很好的信息:http ://www.idmworks.com/blog/entry/getting-started-with-oauth2client-on-ios

于 2015-05-17T06:23:00.110 回答
0

我最近做了简单的 pod https://github.com/kohtenko/KOSocialOAuth

您可以轻松连接InstagramVKLinkedIn。随意使用任何其他 OAuth 端点发送拉取请求。

于 2015-06-01T11:13:53.680 回答
0

查看此内容以使用 Instagram API:https ://github.com/shyambhat/InstagramKit 。在评论中,我看到您在重定向时遇到问题 - 请查看 Xcode 的重定向 URI 以获得帮助:什么是重定向 URI?它如何适用于 OAuth2.0 的 iOS 应用程序?

于 2015-07-30T22:55:08.373 回答