Flutter韩国Naver账号登录插件flutter_naver_login_plus的使用
Flutter韩国Naver账号登录插件flutter_naver_login_plus的使用
flutter_naver_login_plus
插件用于在Flutter应用中实现韩国Naver账号登录功能。该插件最近更新了Android命名空间问题以兼容Android Gradle插件7.0.0及以上版本,并更新了Android构建配置以符合最新的Gradle和Android版本。现在支持在Android构建中使用namespace
属性。
安装
要使用此插件,在项目的pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter_naver_login_plus: ^latest_version # 替换为正确的版本号
具体细节可以参考pub.dev。
使用示例
以下是一个完整的示例代码,展示了如何使用flutter_naver_login_plus
插件进行Naver账号登录。
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter_naver_login_plus/flutter_naver_login_plus.dart';
final GlobalKey<ScaffoldMessengerState> snackbarKey = GlobalKey<ScaffoldMessengerState>();
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Naver Login',
scaffoldMessengerKey: snackbarKey,
theme: ThemeData(
primarySwatch: Colors.green,
primaryColor: const Color(0xFF00c73c),
canvasColor: const Color(0xFFfafafa),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
textStyle: TextStyle(
fontSize: 12.0,
color: Colors.black,
fontWeight: FontWeight.normal,
fontFamily: "Roboto",
),
),
),
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
[@override](/user/override)
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
bool isLogin = false;
String? accessToken;
String? expiresAt;
String? tokenType;
String? name;
String? refreshToken;
/// 在ScaffoldMessenger中显示错误信息
void _showSnackError(String error) {
snackbarKey.currentState?.showSnackBar(
SnackBar(
backgroundColor: Colors.red,
content: Text(error.toString()),
),
);
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text(
'Flutter Naver Login Sample',
style: TextStyle(color: Colors.white),
),
),
body: ListView(
padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 20),
children: [
Column(
children: [
Text('isLogin: $isLogin\n'),
Text('accessToken: $accessToken\n'),
Text('refreshToken: $refreshToken\n'),
Text('tokenType: $tokenType\n'),
Text('user: $name\n'),
],
),
ElevatedButton(
onPressed: buttonLoginPressed,
child: const Text("LogIn"),
),
ElevatedButton(
onPressed: buttonLogoutPressed,
child: const Text("LogOut"),
),
ElevatedButton(
onPressed: buttonLogoutAndDeleteTokenPressed,
child: const Text("LogOutAndDeleteToken"),
),
ElevatedButton(
onPressed: buttonTokenPressed,
child: const Text("GetToken"),
),
ElevatedButton(
onPressed: buttonGetUserPressed,
child: const Text("GetUser"),
)
],
),
);
}
Future<void> buttonLoginPressed() async {
try {
final NaverLoginResult res = await FlutterNaverLoginPlus.logIn();
setState(() {
name = res.account.nickname;
isLogin = true;
});
} catch (error) {
_showSnackError(error.toString());
}
}
Future<void> buttonTokenPressed() async {
try {
final NaverAccessToken res = await FlutterNaverLoginPlus.currentAccessToken;
setState(() {
refreshToken = res.refreshToken;
accessToken = res.accessToken;
tokenType = res.tokenType;
});
} catch (error) {
_showSnackError(error.toString());
}
}
Future<void> buttonLogoutPressed() async {
try {
await FlutterNaverLoginPlus.logOut();
setState(() {
isLogin = false;
accessToken = null;
tokenType = null;
name = null;
});
} catch (error) {
_showSnackError(error.toString());
}
}
Future<void> buttonLogoutAndDeleteTokenPressed() async {
try {
await FlutterNaverLoginPlus.logOutAndDeleteToken();
setState(() {
isLogin = false;
accessToken = null;
tokenType = null;
name = null;
});
} catch (error) {
_showSnackError(error.toString());
}
}
Future<void> buttonGetUserPressed() async {
try {
final NaverAccountResult res = await FlutterNaverLoginPlus.currentAccount();
setState(() => name = res.name);
} catch (error) {
_showSnackError(error.toString());
}
}
}
更多关于Flutter韩国Naver账号登录插件flutter_naver_login_plus的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter韩国Naver账号登录插件flutter_naver_login_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中集成和使用 flutter_naver_login_plus
插件来进行Naver账号登录的示例代码。
1. 添加依赖
首先,在你的 pubspec.yaml
文件中添加 flutter_naver_login_plus
依赖:
dependencies:
flutter:
sdk: flutter
flutter_naver_login_plus: ^最新版本号 # 请确保使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 配置Android和iOS
Android
在 android/app/src/main/AndroidManifest.xml
文件中添加以下权限和配置:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.yourapp">
<uses-permission android:name="android.permission.INTERNET"/>
<application
...>
<!-- 其他配置 -->
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="your_custom_scheme" android:host="auth" />
</intent-filter>
</activity>
<!-- Naver Login Activity -->
<activity
android:name="com.navercorp.login.sdk.auth.OAuthWebviewActivity"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
</activity>
</application>
</manifest>
别忘了替换 your_custom_scheme
为你在Naver开发者控制台中配置的自定义URL Scheme。
iOS
在 ios/Runner/Info.plist
文件中添加以下配置:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>your_custom_scheme</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>naverauth</string>
</array>
3. 配置Naver开发者控制台
确保你已经在Naver开发者控制台中创建了一个应用,并配置了以下信息:
- 应用名称
- 包名(对于Android)或Bundle ID(对于iOS)
- 自定义URL Scheme
4. 使用插件进行登录
在你的Flutter代码中,你可以这样使用 flutter_naver_login_plus
插件:
import 'package:flutter/material.dart';
import 'package:flutter_naver_login_plus/flutter_naver_login_plus.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Naver Login Example'),
),
body: Center(
child: NaverLoginButton(
clientId: '你的客户端ID',
clientSecret: '你的客户端密钥',
redirectUri: 'your_custom_scheme://auth',
onLoginSuccess: (accessToken, userId, profile) {
// 处理登录成功
print('Access Token: $accessToken');
print('User ID: $userId');
print('Profile: $profile');
},
onLoginFailure: (error) {
// 处理登录失败
print('Login Error: $error');
},
),
),
),
);
}
}
确保你已经替换了 你的客户端ID
和 你的客户端密钥
为你在Naver开发者控制台中获取的值,并且 redirectUri
与你在Naver开发者控制台中配置的URL Scheme相匹配。
这样,你就可以在你的Flutter应用中集成Naver账号登录功能了。