私は長年、iPhoneアプリケーションでOAuth 2.0統合を取得しようと試みてきました。
ライブラリ、チュートリアルなどを検索し、検索しました。しかし、それらはすべて私を行き止まりに導きました。私が持っている主な問題は、それらが非推奨のコードを持っているか、単に動作しないか、いくつかのドキュメントがありますが、従うのは本当に難しいことです(とにかく...).
Xcodeで見つけられる最高のOAuth2ライブラリは次のとおりです。 https://github.com/nxtbgthng/OAuth2Client
しかし、それに関する主な問題は、それが何もしないように見えることです...私はそれに付属するすべてのドキュメントと指示に従いましたが、構築して実行した後、それは認証されていないようです....
だから私は私の主な質問だと思う:誰かがXcodeまたはそのようなことのためのライブラリのための良い最新のOAuth 2.0チュートリアルを知っていますか?
私は現時点で本当に苦労しているからです。..:(
ダン、ありがとうございました。
更新2:ここに私のコードがあります(セキュリティのためにアプリ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"];
}
ほとんどすべてのプロジェクトで AFNetworking を使用しました。これは非常に強力だからです-毎回車輪を再発明する理由:)
さらに、 OAuth2Manager もあり、これは実装が非常に簡単で堅実に動作します。
最近、シンプルなポッドを作成しました https://github.com/kohtenko/KOSocialOAuth 。
Instagram
、VK
、またはLinkedIn
を簡単に接続できます。他のOAuthエンドポイントと一緒にPull Requestを送信してください。
In Instagram documentation は、認証する方法が2つあることを示しています。 1つの明示的(サーバー側認証用)と1つの暗黙的、クライアント内の認証用(サーバーなし)。
アプリ内でExplicitを使用しています。userURL
をhttps://instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
に、tokenURL
をhttp://your-redirect-uri#access_token=ACCESS-TOKEN
に変更してみてください。
Instagram APIの使用についてはこちらをご覧ください: https://github.com/shyambhat/InstagramKit 。コメントでは、リダイレクトに問題があることがわかります-XcodeのリダイレクトURIを参照してください: リダイレクトURIとは?OAuth2.0のiOSアプリにどのように適用されますか?
あなたはおそらく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