スタッフブログ

STAFF BLOG

アプリ開発日誌

2016.07.11

LINE Login Platformを自分のアプリに実装してみよう!〜iOS編〜

こんにちは、松川です。

今日は先日機会があって触ったLINE Login Platformについて書きたいと思います!

※SDKがダウンロードできている前提で進めます

 

LINE Login Platformとは?

LINEのアカウントを使用したログイン機能を、スマホアプリ・Webアプリに組み込むためのプラットフォームです。

最近はアプリやWebサイトで、会員登録の煩雑なフォーム入力の手間を省くためによく使用されいますよね。

 

開発環境

  • Xcode7.3
  • Swift2.2
  • iOS9〜

 

全体の実装するまでの手順

  1. LINE Business Centerに登録
  2. Channelを作成
  3. iOS/Android SDKをダウンロード
  4. 実装 ← 今回はココ

 

さっそく導入していきましょう!

 

LINE Frameworkをプロジェクトに追加

ダウンロードしたSDKのZipを解凍すると、下記ファイルが入っているのでプロジェクトに追加します

  • LineAdapter.framework
  • LineAdapterLogin.framework
  • LineAdapterUI.framework
  • LineAdapterUI.bundle

 

その他に必要なFrameworkをプロジェクトに追加

プロジェクトのGeneralからLinked frameworks and Librariesで、下記Frameworkを追加します

LinkedFrameworks

  • Foundation.framework
  • UIKit.framework
  • Security.framework
  • CoreTelephony.framework
  • CoreGraphics.framework
  • CoreText.framework

 

その他の設定

プロジェクトで以下の設定を行います

  • リンカのフラグ設定
    • Build SettingsにあるOther Liner Flagsの項目に「-ObjC」を追加してください

設定

  • URLタイプの設定
    • Info > URL TypesでURLスキームを設定してください
    • ここで注意する事は、スキームの先頭に「line3rdp.」をつける必要があります
    • ここで指定したスキーム名は、Channelのアプリ設定のURL Scheme欄にも同様の名前で設定してください

URLTypes

 

設定ファイルの作成

LINE frameworkを使用するにあたって、自分のChannel IDを設定ファイルに記載する必要があります。

.plistを作成して、下記のように自分のChannel IDを指定してください

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>ChannelId</key>
	<string>123456789</string>
</dict>
</plist>

 

iOS9以降の設定

iOS9からATS(App Transport Security)という機能がついたので、LINEアプリが弾かれないようにホワイトリストを作成します。

ATSを無効にしても(たぶん?)大丈夫ですが、2017年1月1日から全てのiOSアプリにATS対応が必須になりそうなのであまり得策ではないでしょう。

アップル、「iOS」アプリにHTTPS接続を義務づけへ–2017年1月から

japan.cnet.com

LINEアプリをホワイトリストに追加

<key> LSApplicationQueriesSchemes </key> 
<array> 
 <string> lineauth </string> 
 <string> line3rdp.sample </string>
</array>

LINEドメインをホワイトリストに追加

<key> NSAppTransportSecurity </key> 
<dict> 
 <key> NSExceptionDomains </key> 
 <dict> 
  <key> obs.line-apps.com </key> 
  <dict> 
   <key> NSIncludesSubdomains </key> 
   <true/> 
   <key> NSThirdPartyExceptionAllowsInsecureHTTPLoads </key> 
   <true/> 
   <key> NSThirdPartyExceptionRequiresForwardSecrecy </key> 
   <false/> 
  </dict> 
  <key> dl.profile.line-cdn.net </key> 
  <dict> 
   <key> NSIncludesSubdomains </key> 
   <true/> 
   <key> NSThirdPartyExceptionAllowsInsecureHTTPLoads </key> 
   <true/> 
   <key> NSThirdPartyExceptionRequiresForwardSecrecy </key> 
   <false/> 
  </dict> 
  <key> dl.profile.line.naver.jp </key> 
  <dict> 
   <key> NSIncludesSubdomains </key> 
   <true/> 
   <key> NSThirdPartyExceptionRequiresForwardSecrecy </key> 
   <false/> 
  </dict> 
  <key> lcs.naver.jp </key> 
  <dict> 
   <key> NSThirdPartyExceptionRequiresForwardSecrecy </key> 
   <false/> 
  </dict> 
  <key> scdn.line-apps.com </key> 
  <dict> 
   <key> NSThirdPartyExceptionRequiresForwardSecrecy </key> 
   <false/> 
  </dict> 
  <key> access.line.me </key> 
  <dict> 
   <key> NSThirdPartyExceptionRequiresForwardSecrecy </key> 
   <false/> 
  </dict> 
  <key> api.line.me </key> 
  <dict> 
   <key> NSThirdPartyExceptionRequiresForwardSecrecy </key> 
   <false/> 
  </dict> 
 </dict> 
</dict>

 

LINEの認証結果を受信できるよう設定

AppDelegateクラスに下記を追加しましょう

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        LineAdapter.handleLaunchOptions(launchOptions)
        return true
}

func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
        return LineAdapter.handleOpenURL(url)
}

func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool {
        return LineAdapter.handleOpenURL(url)
}

 

LineAdapterのインスタンスを生成

let adapter: LineAdapter = LineAdapter.initWithConfigFile()

// LINEログイン時に結果を返却してくれる通知を設定
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.authorizationDidChange(_:)), name: LineAdapterAuthorizationDidChangeNotification, object: nil)

extension ViewController {
    
    func authorizationDidChange(notification: NSNotification) {
        let adapter = notification.object as! LineAdapter
        
        if adapter.authorized {
            // ログイン成功
            alert("Login success!", message: "")
            return
        }
        
        if let error = notification.userInfo?["error"] as? NSError {
            // ログイン失敗
            alert("Login error!", message: error.localizedDescription)
        }
        
}

Login

if adapter.isAuthorized() {
    // ログイン済み
    return
}

if !adapter.canAuthorizeUsingLineApp() {
    // LINEアプリがインストールされていない
    return
}

// LINEアプリで認証
adapter.authorize()

 

Logout

adapter.unauthorize()

 

プロフィールを取得

プロフィール取得APIで取得できる項目は下記です。

友達一覧、グループ情報は取得できません。

  • LINEで設定された名前
  • LINEで設定されたプロフィール画像
  • LINEで設定されたひとこと
  • LINE上の内部的な識別子
// プロフィール取得
adapter.getLineApiClient().getMyProfileWithResultBlock {[unowned self] (profile, error) -> Void in
    if error != nil {
        self.alert("Error occured!", message: error.localizedDescription)
        return
    }
                
        let displayName = profile["displayName"] as! String
        let mid = profile["mid"] as! String
        let picture = profile["pictureUrl"] as! String
        let statusMessage = profile["statusMessage"] as! String
}

 

以上が、LINE Loginの実装でした。

 

まとめ

今日LINEの普及率は全世代で85%以上(マイナビニュースから引用)と、とても多くの人達が利用しています。

またLINE Login Platformを取り入れる事でコンバージョンの向上にも繋がるので、会員登録をさせているアプリ・WEBサイトをお持ちの方は導入をご検討してみてはどうでしょうか!

BACK

お問合せ

イーディーエーに興味をお持ちいただいて
ありがとうございます!
スマホアプリに関するご相談、
お見積りや弊社へのご質問など、
お気軽にお問い合わせください。
担当者より折り返しご連絡させていただきます。

    お名前必須
    会社名
    メールアドレス必須
    電話番号必須
    お問合わせ種別必須
    お問合わせ内容必須

    アンケートにご協力ください。
    弊社サイトへはどのようにしてアクセスされましたか?

    個人情報のお取扱いに関する同意事項

    1.事業者の氏名又は名称

    株式会社イーディーエー

    2.個人情報保護管理者の氏名又は職名、所属及び連絡先

    個人情報保護管理者 小宮 保人
    Mail:[email protected]

    3.取得した個人情報の利用目的

    当フォームで取得した個人情報は、お問い合わせに関する回答のために利用し、目的外利用はいたしません。

    4.弊社が取得した個人情報の第三者への委託、提供について

    弊社は、ご本人に関する情報をご本人の同意なしに第三者に委託または提供することはありません。

    5.個人情報保護のための安全管理

    弊社は、ご本人の個人情報を保護するための規程類を定め、従業者全員に周知・徹底と啓発・教育を図るとともに、その遵守状況の監査を定期的に実施いたします。
    また、ご本人の個人情報を保護するために必要な安全管理措置の維持・向上に努めてまいります。

    6.個人情報の開示・訂正・利用停止等の手続

    ご本人が、弊社が保有するご自身の個人情報の、利用目的の通知、開示、内容の訂正、追加又は削除、利用の停止、消去及び第三者への提供の停止を求める場合には、下記に連絡を頂くことで、対応致します。

    株式会社イーディーエー 個人情報お問合せ窓口
    〒106-0032 東京都港区六本木7丁目14番23 ラウンドクロス六本木4F
    TEL:03-5422-7524 FAX:03-5422-7534
    Mail:[email protected]

    7.ご提供いただく情報の任意性

    個人情報のご提供は任意ですが、同意を頂けない場合には、第3項にあります利用目的が達成できない事をご了承いただくこととなります。

    8.弊社Webサイトの運営について

    弊社サイトでは、ご本人が弊社Webサイトを再度訪問されたときなどに、より便利に閲覧して頂けるよう「クッキー(Cookie)」という技術を使用することがあります。これは、ご本人のコンピュータが弊社Webサイトのどのページに訪れたかを記録しますが、ご本人が弊社Webサイトにおいてご自身の個人情報を入力されない限りご本人ご自身を特定、識別することはできません。
    クッキーの使用を希望されない場合は、ご本人のブラウザの設定を変更することにより、クッキーの使用を拒否することができます。その場合、一部または全部のサービスがご利用できなくなることがあります。