# iOSアプリにLINEログインを組み込む
SDKをインストールしてプロジェクトを設定したら、LINEログインを使ったユーザーエクスペリエンスの向上に取りかかることができます。
# LineSDK
ヘッダーファイルをインポートする
LINE SDKが使用されるすべてのファイルにLineSDK.h
ファイルをインポートします。
#import <LineSDK/LineSDK.h>
# ログイン処理を実行する
ユーザーがiOSアプリにログインできるようにするために、LINEロゴがついたログインボタンを作成できます。ユーザーはこのボタンを使ってログインできます。
ログインを実行するには2つの方法があります。
# LINE SDKに組み込まれているログインボタンを使う
LINE SDK for iOS Objective-Cには定義済みのログインボタンが備わっています。LineSDKLoginButton
クラスは「LINEログインボタン デザインガイドライン」で推奨されるスタイルに準拠しています。ユーザーが簡単にアプリにログインできるように、アプリのユーザーインターフェイスにログインボタンを追加できます。
ログインボタンをビュー階層に追加するには、以下の手順に従います。
LineSDKLoginButton
オブジェクトを作成します。LineSDKLoginButton
オブジェクトのdelegate
プロパティとpermissions
プロパティを設定します。LineSDKLoginButton
オブジェクトを追加します。
コードは以下のようになります。
@interface LoginViewController() <LineSDKLoginButtonDelegate>
@end
@implementation LoginViewController
- (void)viewDidLoad {
[super viewDidLoad];
LineSDKLoginButton *loginBtn = [[LineSDKLoginButton alloc] init];
loginBtn.delegate = self;
loginBtn.permissions = @[@"profile", @"openid", @"email"];
[self.view addSubview:loginBtn];
// ... additional setup for login button layout
}
//...
@end
ユーザーがログインボタンをタップすると、適切なログインフローで認証されます。ユーザーがデバイスにLINEをインストール済みの場合、LINEからアプリにユーザーのLINE認証情報が渡されます。ユーザーはこの認証情報を使って認証を受けます。そうでない場合、ブラウザでLINEログイン画面が開きます。ユーザーは、この画面にLINE認証情報を入力します。
ログイン状態を受信するには、LineSDKLoginButtonDelegate
プロトコルの関連するデリゲートメソッドを以下のように実装します。
@implementation LoginViewController
// ...
- (void)loginButton:(LineSDKLoginButton *)button didFailLoginWithError:(nullable NSError *)error
{
NSLog(@"Error, %@", error);
}
- (void)loginButton:(LineSDKLoginButton *)button
didSucceedLoginWithCredential:(nullable LineSDKCredential *)credential
profile:(nullable LineSDKProfile *)profile
{
NSString *result = [NSString stringWithFormat:@"Result : %@ \n %@", credential, profile];
NSLog(@"Login Success: %@", result);
//...
}
@end
ログイン処理が完了すると、デリゲートメソッドのいずれかがログイン結果と共に呼び出されます。
# 独自のコードを使う
デフォルトのログインボタンを使う代わりに、コードを使ってユーザーインターフェイスとログインプロセスをカスタマイズすることもできます。
# LINEログインのデリゲートを設定してログイン結果を処理する
ログイン処理の結果を待機して処理するために、ログイン結果を受け取るview controllerにデリゲートを設定します。ユーザーがログインした後に結果を受け取ると、NSStrings
に含まれるユーザーのアクセストークン、ユーザーID 、およびユーザープロフィール情報を抽出できます。ユーザープロフィールには、ユーザーの表示名、ステータスメッセージ、およびプロフィール画像のURLが含まれます。
View controllerの
viewDidLoad
メソッドでデリゲートを設定します。- (void)viewDidLoad { [super viewDidLoad]; ... // Set the LINE Login Delegate [LineSDKLogin sharedInstance].delegate = self; }
ログイン結果を処理してデータを保存するには、
LineSDKLoginDelegate
プロトコルのdidLogin
メソッドを使用します。#pragma mark LineSDKLoginDelegate - (void)didLogin:(LineSDKLogin *)login credential:(LineSDKCredential *)credential profile:(LineSDKProfile *)profile error:(NSError *)error { if (error) { // Login failed with an error. Use the error parameter to identify the problem. NSLog(@"Error: %@", error.localizedDescription); } else { // Login success. Extracts the access token, user profile ID, display name, status message, and profile picture. NSString * accessToken = credential.accessToken.accessToken; NSString * userID = profile.userID; NSString * displayName = profile.displayName; NSString * statusMessage = profile.statusMessage; NSURL * pictureURL = profile.pictureURL; NSString * pictureUrlString; // If the user does not have a profile picture set, pictureURL will be nil if (pictureURL) { pictureUrlString = profile.pictureURL.absoluteString; } } }
didLogin
メソッドのパラメータから、以下の情報を取得できます。パラメータ 説明 credential
ユーザーのアクセストークン profile
ユーザーのプロフィール情報 error
ログインエラー情報。ログインが成功すると、 nil
になります。
# 独自のコードを使ってログインする
独自のコードを使ってログインするには、startLogin
メソッドを呼び出します。コールバック関数で共通インスタンスの[LineSDKLogin sharedInstance]
が取得され、先に定義したLineSDKLoginDelegate
プロトコルのメソッドで結果が制御されます。
- (IBAction)startLogin:(id)sender {
NSLog(@"Button pressed: %@");
[[LineSDKLogin sharedInstance] startLoginWithPermissions:@[@"profile", @"friends", @"groups"]];
}
ログインインターフェイスの設計については、「LINEログインボタン デザインガイドライン」を参照してください。このページからは、LINEログインボタンの画像もダウンロードできます。
# LINE SDK 4.x for iOSからアップグレードする場合の注意事項
startLoginWithPermissions
メソッドを呼び出すときは、必ずpermissions
パラメータを指定してください。そうしない場合は、LINEプラットフォームから以下のエラーが返されます。
Error Domain=LineSDKInternalErrorDomain Code=1 "'scope' is not specified." UserInfo={NSLocalizedDescription='scope' is not specified.}
このメッセージ中の「Scope」は、LINE SDK for iOS Objective-Cの「permissions」を意味します。startLoginWithPermissions
メソッドについて詳しくは、『LINE SDK for iOS Objective-Cリファレンス』の「-startLoginWithPermissions:」を参照してください。
# LineSDKAPI
オブジェクトを初期化する
LINEプラットフォームはLineSDKAPI
インスタンスを介して呼び出されます。LINEプラットフォームを呼び出すには、LineSDKAPI
オブジェクトを初期化します。
apiClient = [[LineSDKAPI alloc] initWithConfiguration:[LineSDKConfiguration defaultConfig]];