环境
- Xcode版本10.2
- 迅捷5
要做的事情
从
应用程序登录LINE并获取您的个人资料信息。
向LINE开发人员注册应用
①登录到LINE开发人员
从https://developers.line.biz/ja/
登录
由于这一次我们使用个人帐户进行开发,请选择"使用LINE帐户登录"。
将会提示您输入电子邮件地址和密码,因此请输入它们以登录。
②提供商?创建一个新的渠道
创建提供程序后,创建频道。
提供程序是您登录时显示为提供程序的信息。
登录LINE时,将显示您在此处输入的信息。
频道是按应用创建的。
在这里,选择LINE登录。
接下来,输入所需信息并注册。
用户将看到它,因此请根据需要设置其格式并输入。
这次的输入内容如下。
提供程序:TestProvider
图标:未设置
应用名称:测试应用
应用说明:登录测试。
*顺便说一句,如果输入以上内容,则登录LINE时将显示以下内容。
尽管是输入内容,但请仔细描述,因此您可以根据描述内容进行输入。
(您几乎可以在以后编辑它。)
输入
后,确认输入内容并注册,然后将创建通道。
*这次,它被设置为私人测试,但是
我认为有必要在发布时将其公开。
③确认已发出ChannelId
您可以通过单击创建的频道来编辑注册内容。
*您也可以从这里申请openId。
您可以看到
ChannelId已发出。
这用于应用程序侧的设置。
④设置应用程序的捆绑ID
您可以通过打开应用程序设置来设置捆绑包ID和方案。
(如果尚未创建应用程序,请在创建应用程序后对其进行设置。)
如果它与在应用程序侧设置的bundleID(x代码)不同,则
请注意,将发生错误,并且您将无法登录LINE。
*顺便说一句,在上述情况下,发生以下错误。
1 | error: authorizeFailed(reason: LineSDK.LineSDKError.AuthorizeErrorReason.webLoginError(error: "invalid_request", description: Optional("Invalid+URI+:+[line3rdp.hoge.LineLoginSample://authorize/]"))) |
如果可以执行此操作,则LINE开发人员中的设置已完成。
设置为使用带有X代码的LINE登录
①链接应用程序和LINE开发人员的设置
基本上,如果您参考以下文章,则可以顺利进行。
它被很好地列出。
设置LINE SDK for iOS项目
主要要做的事情如下。 (无特定顺序)
- LINE SDK的介绍(吊舱,迦太基等)
- 开启KeyChain Shahareing设定
-
在Info.plist的URL方案中设置
line3rdp.$(PRODUCT_BUNDLE_IDENTIFIER) - 在Info.plist的LineSDKConfig中设置ChannelId
*参考图片
(2)实施AppDelegate
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import UIKit import LineSDK @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { return LoginManager.shared.application(app, open: url, options: options) } func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // アプリの起動直後に、LoginManager.setupメソッドを呼び出す // https://developers.line.biz/ja/docs/ios-sdk/swift/integrate-line-login/ // setupメソッドを呼び出した後で他のメソッドを呼び出したりすること LoginManager.shared.setup(channelID: "LINE developersで発行されたchannelIDを入力", universalLinkURL: nil) return true } } |
③实施登录按钮
基本上,您可以参考以下文章来顺利进行。
(此外,本文存在的意义?)
将LINE登录信息整合到LINE SDK for iOS iOS应用
放置登录按钮的视图控制器实现如下。
作为一种方法,我已经确认了两种方法,因此我将分别进行描述。
1.如何使用SDK LoginButton
UIButton放置在Storybord上,并且Outlet连接到LoginButton。
实现内容如下。
- 登录按钮的位置
-
LoginButtonDelegate委托方法的实现
- 访问令牌到期日期?访问令牌日志输出
- 记录配置文件信息(用户名,状态,图标图像URL)的输出(实际上,我在secondView中显示了配置文件信息,但是由于代码似乎很微妙,所以我不会发布它)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | import UIKit import LineSDK final class ViewController: UIViewController, LoginButtonDelegate { /// ログインボタン @IBOutlet weak var loginButton: LoginButton! override func viewDidLoad() { super.viewDidLoad() // delegateをセット self.loginButton.delegate = self // 設定しないとエラーになる↓(今回はプロフィール情報を取得する) self.loginButton.permissions = [.profile] // アクセストークンの有効期限 if let token = AccessTokenStore.shared.current { print("Token expires at:\(token.expiresAt)") print(token.expiresAt.toStringWithCurrentLocale()) } // 現在のアクセストークン if let token = AccessTokenStore.shared.current { print("Token value:\(token.value)") } } /// ログイン開始時に呼ばれる func loginButtonDidStartLogin(_ button: LoginButton) { print("Login Start") } /// ログイン成功時に呼ばれる func loginButton(_ button: LoginButton, didSucceedLogin loginResult: LoginResult) { print("Login Succeed") if let profile = loginResult.userProfile { print(profile.userID) print(profile.displayName) print(profile.pictureURL!) print(profile.statusMessage!) } // 画面遷移 self.transitionSecondView() } /// ログイン失敗時に呼ばれる func loginButton(_ button: LoginButton, didFailLogin error: Error) { print("Login Faild") } /// 画面遷移 func transitionSecondView() { let storyboard: UIStoryboard = self.storyboard! let secondView = storyboard.instantiateViewController(withIdentifier: "secondView") present(secondView, animated: true, completion: nil) } } extension Date { /// 現在時刻を取得 /// /// - Returns: 現在時刻 func toStringWithCurrentLocale() -> String { let formatter = DateFormatter() formatter.timeZone = TimeZone.current formatter.locale = Locale.current formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" return formatter.string(from: self) } } |
2.如何从UIButton
使用
按下登录按钮时只需调用LoginManager.shared.login。
实现内容如下。
- 登录按钮的位置(UIBtton)
- 日志访问令牌
- 日志输出配置文件信息(用户名,状态,图标图像URL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /// ログイン処理 func login() { LoginManager.shared.login(permissions: [.profile], in: self) { result in switch result { case .success(let loginResult): if let profile = loginResult.userProfile print(profile.displayName) print(profile.pictureURL!) print(profile.statusMessage!) } print("Login Token value:\(loginResult.accessToken.value)") case .failure(let error): print("error:",error) } } } |
概括
(如果您不使用openId),对于初学者来说LINE登录非常容易,
我觉得它易于实现,因为日语参考文件也很到位。
如果您有任何建议或建议,请随时与我们联系。
参考
- LINE SDK for iOS Swift概述
- 适用于iOS Swift的LINE SDK v5.0