mixiアプリ » 技術仕様(Graph API方式) » mixi API SDK for iOS » 初期化と認可処理
初期化と認可処理
mixi API SDK for iOS を利用したアプリケーションを実際に開発する際のコードの記述方法について説明します。
ヘッダファイルの追加
SDKを利用する場合は次のヘッダファイルをインポートしてください。
#import "MixiSDK.h"
初期化
mixi APIの呼び出しに使用するMixiクラスはシングルトンクラスです。インスタンスは次のようにして取得できます。
[Mixi sharedMixi]
ただし、APIを実行する前に一度シングルトンオブジェクトを初期化しておく必要があります。
UIApplicationDelegate#application:didFinishLaunchingWithOptions:
メソッド内で次のように記述するといいでしょう。(全ての引数はアプリケーションの設定に合わせて変更してください)
Mixi *mixi = [[Mixi sharedMixi] setupWithType:kMixiApiTypeSelectorMixiApp
clientId:@"ab12c345de6789f12345"
secret:@"a1b2c3456d789ef0123ghi4567jklmn89op01qrs"];
[mixi restore];
[mixi reportOncePerDay];
なお、上記のMixi#reportOncePerDayはアプリの起動をmixiに通知するものです。 このコードの追記は任意ですが、サービスの改善のために協力していただけると幸いです。 アプリケーションの情報は一切送信されません。
認可
mixiアプリのAPIを利用するためには、ユーザにAPI利用のための認可を行なってもらう必要があります。そのための画面を表示するのが authorize: メソッドです。
[mixi authorize:@"r_profile", @"w_diary", nil];
このメソッドを呼び出すことで、ユーザーの認可を促す画面が表示されます。
デフォルトではmixi公式iPhoneアプリ(以下、公式アプリ)の有無によって認可画面の表示に異なるオブジェクトが利用されるため、公式アプリを使用した認可、およびSDK単体での認可に対応した2つの処理を記述してください。
iOS7ではUIPasteboardの変更により公式アプリを利用した認可ができなくなっており、SDK単体での認可を行います。
公式アプリを使用した認可
端末に公式アプリがインストールされている場合は、認可/認可解除は公式アプリを利用して行われます。 公式アプリを利用して認可するとログイン情報が公式アプリと共有されるため、公式アプリですでにログイン済みであればユーザーIDとパスワードの入力を省略できます。
公式アプリから認可結果(アクセストークンなど)を受け取るために
UIApplicationDelegate#application:openURL:sourceApplication:annotation:
メソッドに次のような処理を追加してください。
NSError *error = nil;
NSString *apiType = [[Mixi sharedMixi] application:application openURL:url sourceApplication:sourceApplication annotation:annotation error:&error];
if (error) {
// エラーが発生しました
}
else if ([apiType isEqualToString:kMixiAppApiTypeToken]) {
// 認可処理に成功しました
}
else if ([apiType isEqualToString:kMixiAppApiTypeRevoke]) {
// 認可解除処理に成功しました
}
else if ([apiType isEqualToString:kMixiAppApiTypeReceiveRequest]) {
// リクエストAPIによるリクエスト受け取り
}
SDK単体での認可
SDKの持つウェブビューコントローラを使用して認可画面を表示するには、そのビューコントローラの親になるビューコントローラを設定します。
APIを呼び出すビューコントローラのUIViewController#viewDidAppear:に次のようなコードを追加してください。(MixiAuthorizer#setParentViewControllerに設定する値は適宜変更してください)
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
Mixi *mixi = [Mixi sharedMixi];
mixi.authorizer.parentViewController = [self navigationController];
}
認可が完了するとその結果はSDK内に保持され、事前設定されたparentViewControllerに処理が戻されます。 認可完了時にそれら以外の処理を実行する必要がある場合は認可オブジェクトにデリゲートを設定してください。
mixi.authorizer.delegate = [[YourDelegate alloc] init];
- MixiSDKAuthorizerDelegate#authorizer:didSuccessWithEndpoint:
- MixiSDKAuthorizerDelegate#authorizer:didCancelWithEndpoint:
- MixiSDKAuthorizerDelegate#authorizer:didFailWithEndpoint:error:
公式アプリの有無に関わらず認可手段を固定する
認可手段を固定するには UIApplicationDelegate#application:didFinishLaunchingWithOptions: メソッド内で Mixi#setupWithType:clientId:secret: を呼び出した後に mixi.authorizer を直接設定してください。
公式アプリを使用した認可に固定する
認可に公式アプリを必ず使用するにはMixiオブジェクトをセットアップした後に次のように記述します。 (ただし、アプリケーションの実行に公式アプリが必須となってしまうためApple社の審査に通らない可能性があります)
[(id)mixi.authorizer shouldUseAppAuthorizer];
公式アプリでの認可だけを使用する場合は先に説明したSDK単体認可用のコードは不要です。
SDK単体での認可に固定する
SDKの持つ認可画面を必ず使用するには次のように記述します。
[(id)mixi.authorizer shouldUseSDKAuthorizer];
SDK単体での認可だけを使用する場合は先に説明した公式アプリを利用した認可用のコードは不要です。
認可状態の確認
現在の認可状態を確認するには、以下のメソッドを利用します。
Mixi#isAuthorized
通常は、認可画面は初回のみ表示され、2回目以降はスキップすることが可能です。isAuthorizedメソッドはそのための確認処理を行います。既に認可済みであれば YES が返り、未認可であれば NO が返ります。
認証解除
以下のメソッドを呼び出すことで認可状態の解除を行います。なお、mixi API SDK for iOS を利用する場合はユーザ保護の観点から、必ずこの認証解除機能を必ずアプリケーションから呼び出せるようにしてください。
Mixi#revoke
なお、上記メソッドを呼び出しただけではSDK内にキャッシュされている古いアクセストークンは破棄されません。次のメソッドを利用することで認証の解除とアクセストークンの破棄を同時に行うことも可能です。
Mixi#revokeAndLogout