mixi Connect » mixi Graph API » mixi API SDK for iOS » 初期化と認可処理
初期化と認可処理
mixi API SDK for iOS を利用したアプリケーションを実際に開発する際のコードの記述方法について説明します。
ヘッダファイルの追加
SDKを利用する場合は次のヘッダファイルをインポートしてください。
#import "MixiSDK.h"
初期化
mixi APIの呼び出しに使用するMixiクラスはシングルトンクラスです。インスタンスは次のようにして取得できます。
[Mixi sharedMixi]
ただし、APIを実行する前に一度シングルトンインスタンスを初期化しておく必要があります。 例えばGraph APIを使用する場合、 UIApplicationDelegate#application:didFinishLaunchingWithOptions: メソッド内で次のように記述するといいでしょう。 (全ての引数はアプリケーションの設定に合わせて変更してください)
Mixi *mixi = [[Mixi sharedMixi] setupWithType:kMixiApiTypeSelectorGraphApi
clientId:@"ab12c345de6789f12345"
secret:@"a1b2c3456d789ef0123ghi4567jklmn89op01qrs"];
[mixi restore];
[mixi reportOncePerDay];
アプリの起動を通知
アプリの起動を通知するコードをapplicationWillEnterForeground:に追記します。
- (void)applicationWillEnterForeground:(UIApplication *)application {
[[Mixi sharedMixi] reportOncePerDay];
}
このコードの追記は任意ですが、サービスの改善のために協力していただけると幸いです。 アプリケーションの情報は一切送信されません。
認可
Graph APIを利用するためには、ユーザにAPI利用のための認可を行なってもらう必要があります。そのための画面を表示するのが authorize: メソッドです。
[mixi authorize:@"r_profile", @"r_diary", @"w_diary", nil];
このメソッドを呼び出すことで、mixi公式アプリを利用してユーザーに認可を促す画面が表示されます。
さらに、公式アプリで行われる認可の結果(アクセストークンなど)を受け取るために 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]) {
// 認可解除処理に成功しました
}
上記により認可が完了してればシングルトンオブジェクトはアクセストークンを保持し、APIを実行できる状態になっています。
認可状態の確認
現在の認可状態を確認するには、以下のメソッドを利用します。
Mixi#isAuthorized
通常は、認可画面は初回のみ表示され、2回目以降はスキップすることが可能です。isAuthorizedメソッドはそのための確認処理を行います。既に認可済みであれば YES が返り、未認可であれば NO が返ります。
認証解除
以下のメソッドを呼び出すことで認可状態の解除を行います。なお、mixi API SDK for iOS を利用する場合はユーザ保護の観点から、この認証解除機能を必ず実装してください。
Mixi#revoke
SDK単独で認可/認可解除を実行
Graph APIを利用する場合に限り公式アプリを経由せずにSDK単独で認可/認可解除を実行できます。
SDK単独での認可を行うには、mixiオブジェクトのauthorizerプロパティをMixiSDKAuthorizerインスタンスに置き換えてください。 UIApplicationDelegate::application:didFinishLaunchingWithOptions:内でMixiオブジェクトをsetupした直後に置き換えるといいでしょう。 redirectUrlはsap.mixi.jpでアプリケーションに設定したリダイレクトURLです。
if (![mixi isMixiAppInstalled]) {
mixi.authorizer = [MixiSDKAuthorizer authorizerWithRedirectUrl:redirectUrl];
}
if (![mixi isMixiAppInstalled])はmixi公式iPhoneアプリがなかった場合のみ、SDK単体で認可を行うようにするためのものです。 mixi公式iPhoneアプリの有無にかかわらず、必ずSDK単体で認可を行う場合はこのif文は不要です。 また、SDK単独で認可を行う場合は認可情報はSDK内部でやりとりされるため、先の項で説明した UIApplicationDelegate::application:openURL:sourceApplication:annotation: での処理も不要になります。
SDK単体で認可する場合は、さらにauthorizerが認可に使用するウェブビューコントローラの親になるビューコントローラを設定しなければいけません。 APIを呼び出すビューコントローラのUIViewController::viewDidAppear:に次のようなコードを追加してください。
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
Mixi *mixi = [Mixi sharedMixi];
if (![mixi isMixiAppInstalled] && ![mixi.authorizer isAuthorized]) {
id authorizer = mixi.authorizer;
[authorizer setParentViewController:[self navigationController]];
}
}
こちらも![mixi isMixiAppInstalled] &&はmixi公式iPhoneアプリがなかった場合にSDK単体で認可を行うようにするためのものです。 mixi公式iPhoneアプリの有無にかかわらずSDK単体で認可を行う場合は上の条件式は不要です。