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

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

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

更多关于 Google My Business 的信息可以参考 Google My Business 和 Google 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流程。这样可以确保你的访问令牌是安全且有效的。

回到顶部