Flutter谷歌我的商家管理插件google_my_business的使用

发布于 1周前 作者 zlyuanteng 来自 Flutter

Flutter谷歌我的商家管理插件 google_my_business 的使用

Google My Business for Flutter 是一个用于与 Google My Business API 进行交互的 Dart/Flutter 包。它简化了与 GMB API 端点的通信和交互。

更多关于 Google My Business 的信息可以参考 Google My BusinessGoogle My Business API 参考

开始使用

注意事项

该包正在积极开发中,在 1.0.0 版本之前,某些 API 可能会有破坏性更改。

认证

使用 Google Sign In 插件进行认证。

支持的端点

示例代码

登录

初始化(订阅用户更改,例如用户登录/登出):

GoogleMyBusiness.instance.init((user) {
  setState(() {
    _currentUser = user;
  });
});

手动登录:

GoogleMyBusiness.instance.signIn().then((user) {
  setState(() {
    _currentUser = user;

    // 使用其他 API,打开新页面或执行其他操作
    // 要访问用户,使用 GoogleMyBusiness.instance.currentUser()
  });
});

登出当前用户:

GoogleMyBusiness.instance.signOut();

管理器

所有管理器负责管理其实体,如账户、位置、评论等。以下是一些示例用法。

账户

获取账户列表:

_accountsManager = AccountsManager();

// ...

await _accountsManager.fetchAccounts((accounts) {
  print("Total accounts: ${accounts.length}");

  setState(() {
    _accounts = accounts;
    _isLoading = false;
  });
}, (error) {
  print('Google My Business API: ${error.code} - ${error.message}');
  setState(() {
    _isLoading = false;
  });
});
位置

获取位置列表:

_locationsManager = LocationsManager(accountId: "my-account-id");

// ...

await _locationsManager.fetchLocations((locations) {
  print("Total locations: ${locations.length}");

  setState(() {
    _locations = locations;
    _isLoading = false;
  });
}, (error) {
  print('Google My Business API: ${error.code} - ${error.message}');
  setState(() {
    _isLoading = false;
  });
});

完整示例 Demo

以下是一个完整的示例应用,展示了如何使用 google_my_business 插件:

import 'package:flutter/material.dart';
import 'login.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Google My Business Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: Login());
  }
}

login.dart 文件中,您可以实现登录逻辑:

import 'package:flutter/material.dart';
import 'package:google_my_business/google_my_business.dart';

class Login extends StatefulWidget {
  [@override](/user/override)
  _LoginState createState() => _LoginState();
}

class _LoginState extends State<Login> {
  bool _isLoading = false;
  dynamic _currentUser;

  [@override](/user/override)
  void initState() {
    super.initState();
    GoogleMyBusiness.instance.init((user) {
      setState(() {
        _currentUser = user;
      });
    });
  }

  void _signIn() {
    setState(() {
      _isLoading = true;
    });

    GoogleMyBusiness.instance.signIn().then((user) {
      setState(() {
        _currentUser = user;
        _isLoading = false;
      });
    }).catchError((error) {
      print('Sign in error: $error');
      setState(() {
        _isLoading = false;
      });
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Google My Business Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            if (_currentUser != null)
              Text('Logged in as: ${_currentUser.displayName}'),
            if (_isLoading)
              CircularProgressIndicator(),
            ElevatedButton(
              onPressed: _signIn,
              child: Text('Sign In'),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter谷歌我的商家管理插件google_my_business的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter谷歌我的商家管理插件google_my_business的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,关于Flutter中的google_my_business插件,这是一个用于管理Google My Business(GMB)账号的Flutter包。它允许开发者在Flutter应用中集成和管理GMB账号的各种功能,如获取商家信息、管理位置、发布帖子等。

下面是一个简单的代码案例,展示了如何使用google_my_business插件来获取商家的基本信息。请注意,为了运行此代码,你需要先配置好你的Google Cloud项目和Flutter应用,并确保你已经获得了必要的OAuth 2.0凭证。

首先,确保在你的pubspec.yaml文件中添加google_my_business依赖:

dependencies:
  flutter:
    sdk: flutter
  google_my_business: ^latest_version  # 请替换为实际的最新版本号

然后,运行flutter pub get来安装依赖。

接下来,你需要设置OAuth 2.0认证。这通常涉及到获取一个访问令牌,该令牌将用于对你的Google My Business API请求进行身份验证。以下代码假设你已经有一个有效的访问令牌。

import 'package:flutter/material.dart';
import 'package:google_my_business/google_my_business.dart';
import 'dart:convert';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late MyBusinessApiClient myBusinessApiClient;
  String? merchantName;

  @override
  void initState() {
    super.initState();
    // 假设你已经有一个有效的访问令牌
    String accessToken = 'YOUR_ACCESS_TOKEN';

    // 初始化MyBusinessApiClient
    myBusinessApiClient = MyBusinessApiClient(
      credentials: OAuth2Credentials(accessToken: accessToken),
    );

    // 获取商家信息
    _getMerchantInfo();
  }

  Future<void> _getMerchantInfo() async {
    try {
      // 获取当前用户的第一个商家(示例)
      var response = await myBusinessApiClient.locations.list(
        name: 'accounts/YOUR_ACCOUNT_ID/locations',
        readMask: 'name,primaryPhone.phoneNumber,primaryCategory.title',
      );

      if (response.locations!.isNotEmpty) {
        var location = response.locations!.first;
        setState(() {
          merchantName = location.name!;
        });

        // 打印商家信息
        print(jsonEncode(location.toJson()));
      } else {
        print('没有找到商家信息');
      }
    } catch (e) {
      print('获取商家信息失败: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Google My Business 示例'),
        ),
        body: Center(
          child: Text('商家名称: $merchantName'),
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. 初始化了MyBusinessApiClient,并传入了包含访问令牌的OAuth2Credentials
  2. 调用了locations.list方法来获取当前用户的商家列表。这里我们只获取了第一个商家的信息作为示例。
  3. 将获取到的商家名称显示在屏幕上。

请注意:

  • YOUR_ACCESS_TOKEN需要替换为你的实际访问令牌。
  • YOUR_ACCOUNT_ID需要替换为你的Google My Business账号ID。
  • 你可能需要根据你的具体需求调整API请求的参数和处理响应的方式。

此外,为了在生产环境中安全地管理访问令牌,建议使用如Firebase Authentication或Google Sign-In等身份验证服务,并结合Google Cloud的Identity Platform来管理OAuth 2.0流程。这样可以确保你的访问令牌是安全且有效的。

回到顶部