Edited at

iOS LINEでログイン(Line SDK)

More than 1 year has passed since last update.


はじめに

LINEアカウントを利用したログイン機能の実装方法について、まとめました。


①ログイン画面

ログインボタンを押下すると、認証画面に遷移する

Screen Shot 2017-06-23 at 22.46.27.png


②認証画面

認証画面で同意するボタンを押下すると、ログインできる

Screen Shot 2017-06-23 at 22.46.52.png


手順


LINE Business Centerでアカウントを登録する


②チャネルを作成し、Channel IDを取得する

スクリーンショット 2017-06-23 22.32.06.png


③Bundle IDとiOS Schemeを設定する

LINE developersのTechnical configurationからBundle IDとiOS Schemeを設定する

なお、iOS Schemeは、「line3rdp.{Bundle-ID}」という命名にすること

下記の例は、Bundle IDが「jp.st-ventures.ios-line-login-demo」

スクリーンショット 2017-06-23 22.06.59.png


④Cocoa PodsでLineSDKをインストールする


Podfile

pod 'LineSDK', '~> 4.0.2'  



⑤Line SDKをダウンロードする

LINE developersのDownload SDKからLineSDK_ios_4.0.2.zipをダウンロードする

スクリーンショット 2017-06-23 22.12.27.png


⑥フレームワークを追加する

下記のフレームワークを追加する

・CoreTelephony.framework

・Security.framework

・LineSDK.framework ← ⑤でダウンロードしたSDK

スクリーンショット 2017-06-23 21.52.30.png


⑦Capabilitiesの「Keychain Sharing」をONにする

スクリーンショット 2017-06-23 22.14.00.png


⑧Info.plistを設定する

Info.plistにチャネルIDとURLスキームを設定する

なお、チャネルIDは、②で取得した値を設定する


Info.plist

<key>LineSDKConfig</key>

<dict>
<key>ChannelID</key>
<string>{CHANNEL ID}</string>
</dict>


Info.plist

<key>CFBundleURLTypes</key>

<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>line3rdp.$(PRODUCT_BUNDLE_IDENTIFIER)</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>lineauth</string>
<string>line3rdp.$(PRODUCT_BUNDLE_IDENTIFIER)</string>
</array>


⑨AppDelegateにLINEからアプリが呼ばれたときの処理を追加する


AppDelegate.swift


import UIKit
import LineSDK

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return LineSDKLogin.sharedInstance().handleOpen(url)
}
}



⑩ログイン画面で、ログイン処理を実装する


ViewController.swift

import UIKit

import LineSDK

final class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
LineSDKLogin.sharedInstance().delegate = self
}

@IBAction func didTapLogin(_ sender: UIButton) {
LineSDKLogin.sharedInstance().start()
}
}
// MARK: - LineSDKLoginDelegate
extension ViewController: LineSDKLoginDelegate {

func didLogin(_ login: LineSDKLogin,
credential: LineSDKCredential?,
profile: LineSDKProfile?,
error: Error?) {

if error != nil {
print(error.debugDescription)
return
}

// アクセストークン
if let accessToken = credential?.accessToken {
print("accessToken : \(accessToken)")
}

// 表示名
if let displayName = profile?.displayName {
print("displayName : \(displayName)")
}

// ユーザID
if let userID = profile?.userID {
print("userID : \(userID)")
}

// プロフィール写真のURL
if let pictureURL = profile?.pictureURL {
print("profile Picture URL : \(pictureURL)")
}
}
}



■補足情報

ちなみに、ログアウトは、下記のとおり。

        let apiClient = LineSDKAPI(configuration: LineSDKConfiguration.defaultConfig())

apiClient.logout(queue: .main) { (success, error) in

if error != nil {
print(error?.localizedDescription ?? "")
return
}

if success {
self.dismiss(animated: true, completion: nil)
}
}


公式マニュアル

詳細は、公式マニュアルに丁寧に記載されています。