363 lines
9.9 KiB
Markdown
363 lines
9.9 KiB
Markdown
# Google Business Profile API Setup Guide
|
|
|
|
This guide provides step-by-step instructions for setting up Google Business Profile (formerly Google My Business) API integration for managing reviews.
|
|
|
|
---
|
|
|
|
## Table of Contents
|
|
|
|
1. [Overview](#overview)
|
|
2. [Prerequisites](#prerequisites)
|
|
3. [Google Cloud Console Setup](#google-cloud-console-setup)
|
|
4. [Environment Configuration](#environment-configuration)
|
|
5. [OAuth Redirect URI Configuration](#oauth-redirect-uri-configuration)
|
|
6. [Permissions & Scopes](#permissions--scopes)
|
|
7. [Development vs Production](#development-vs-production)
|
|
8. [Troubleshooting](#troubleshooting)
|
|
|
|
---
|
|
|
|
## Overview
|
|
|
|
**API Version:** My Business API v4 / Account Management v1
|
|
**Base URL:** Google API Services
|
|
**Auth Method:** OAuth 2.0
|
|
|
|
### Features Supported
|
|
- Fetch business locations
|
|
- Read Google reviews for locations
|
|
- Reply to reviews as the business owner
|
|
- Monitor review ratings and feedback
|
|
|
|
---
|
|
|
|
## Prerequisites
|
|
|
|
- A Google account with owner/manager access to a Google Business Profile
|
|
- Access to [Google Cloud Console](https://console.cloud.google.com/)
|
|
- A verified business location on Google Maps
|
|
|
|
---
|
|
|
|
## Google Cloud Console Setup
|
|
|
|
### Step 1: Create a New Project
|
|
|
|
1. Navigate to [Google Cloud Console](https://console.cloud.google.com/)
|
|
2. Click on the project selector dropdown at the top
|
|
3. Click **"New Project"**
|
|
4. Enter project details:
|
|
- **Project Name:** e.g., "PX360 Social Integration"
|
|
- **Organization:** Select your organization (if applicable)
|
|
5. Click **"Create"**
|
|
6. Select your new project
|
|
|
|
### Step 2: Enable Required APIs
|
|
|
|
1. Go to **"APIs & Services"** → **"Library"**
|
|
2. Search for and enable the following APIs:
|
|
- **Google My Business API** (Note: May require verification)
|
|
- **My Business Account Management API**
|
|
- **My Business Business Information API**
|
|
|
|
> ⚠️ **Important:** Google My Business API requires approval from Google. You may need to fill out a form explaining your use case.
|
|
|
|
### Step 3: Configure OAuth Consent Screen
|
|
|
|
1. Go to **"APIs & Services"** → **"OAuth consent screen"**
|
|
2. Select **"External"** user type (unless you have a Google Workspace account)
|
|
3. Click **"Create"**
|
|
4. Fill in the required fields:
|
|
- **App Name:** Your application name
|
|
- **User Support Email:** Your support email
|
|
- **App Logo:** Upload your logo
|
|
- **Application Home Page:** Your website URL
|
|
- **Authorized Domains:** Your domain(s)
|
|
- **Developer Contact Email:** Your email
|
|
5. Click **"Save and Continue"**
|
|
6. Add scopes (click "Add or Remove Scopes"):
|
|
- `https://www.googleapis.com/auth/business.manage`
|
|
7. Click **"Save and Continue"**
|
|
8. Add test users (for development)
|
|
9. Click **"Save and Continue"**
|
|
|
|
### Step 4: Create OAuth 2.0 Credentials
|
|
|
|
1. Go to **"APIs & Services"** → **"Credentials"**
|
|
2. Click **"Create Credentials"** → **"OAuth client ID"**
|
|
3. Select **"Web application"**
|
|
4. Configure:
|
|
- **Name:** e.g., "PX360 Web Client"
|
|
- **Authorized JavaScript origins:**
|
|
- Development: `http://127.0.0.1:8000`
|
|
- Production: `https://yourdomain.com`
|
|
- **Authorized redirect URIs:**
|
|
- Development: `http://127.0.0.1:8000/social/callback/GO/`
|
|
- Production: `https://yourdomain.com/social/callback/GO/`
|
|
5. Click **"Create"**
|
|
6. **Download the JSON file** - This is your credentials file
|
|
|
|
### Step 5: Save Credentials File
|
|
|
|
1. Rename the downloaded JSON file to `gmb_client_secrets.json`
|
|
2. Place it in your project's `secrets/` directory:
|
|
```
|
|
your_project/
|
|
├── secrets/
|
|
│ └── gmb_client_secrets.json
|
|
└── ...
|
|
```
|
|
|
|
The JSON file structure should look like:
|
|
```json
|
|
{
|
|
"web": {
|
|
"client_id": "xxxxx.apps.googleusercontent.com",
|
|
"project_id": "your-project-id",
|
|
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
|
"token_uri": "https://oauth2.googleapis.com/token",
|
|
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
|
"client_secret": "your-client-secret",
|
|
"redirect_uris": ["http://127.0.0.1:8000/social/callback/GO/"]
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Environment Configuration
|
|
|
|
### Django Settings (settings.py)
|
|
|
|
```python
|
|
# Google Business Profile API Configuration
|
|
import os
|
|
from pathlib import Path
|
|
|
|
BASE_DIR = Path(__file__).resolve().parent.parent.parent
|
|
|
|
# Google My Business (Reviews) Configuration
|
|
GMB_CLIENT_SECRETS_FILE = BASE_DIR / 'secrets' / 'gmb_client_secrets.json'
|
|
GMB_REDIRECT_URI = 'https://yourdomain.com/social/callback/GO/'
|
|
```
|
|
|
|
### Environment Variables (.env)
|
|
|
|
While the credentials are in a JSON file, you can set the redirect URI via environment:
|
|
|
|
```env
|
|
GMB_REDIRECT_URI=https://yourdomain.com/social/callback/GO/
|
|
```
|
|
|
|
---
|
|
|
|
## OAuth Redirect URI Configuration
|
|
|
|
The redirect URI must match exactly what's configured in Google Cloud Console.
|
|
|
|
### Development
|
|
|
|
```
|
|
http://127.0.0.1:8000/social/callback/GO/
|
|
http://localhost:8000/social/callback/GO/
|
|
```
|
|
|
|
### Production
|
|
|
|
```
|
|
https://yourdomain.com/social/callback/GO/
|
|
```
|
|
|
|
> ⚠️ **Note:** Google accepts both HTTP and HTTPS for `localhost`/`127.0.0.1`, but production must use HTTPS.
|
|
|
|
---
|
|
|
|
## Permissions & Scopes
|
|
|
|
The application requires the following OAuth scope:
|
|
|
|
| Scope | Description | Required |
|
|
|-------|-------------|----------|
|
|
| `https://www.googleapis.com/auth/business.manage` | Full access to manage business listings and reviews | ✅ Yes |
|
|
|
|
### Code Reference
|
|
|
|
```python
|
|
# apps/social/utils/google.py
|
|
SCOPES = ['https://www.googleapis.com/auth/business.manage']
|
|
|
|
API_VERSION_MYBUSINESS = 'v4'
|
|
API_VERSION_ACCOUNT_MGMT = 'v1'
|
|
```
|
|
|
|
---
|
|
|
|
## Development vs Production
|
|
|
|
### Development Setup
|
|
|
|
| Setting | Value |
|
|
|---------|-------|
|
|
| `GMB_REDIRECT_URI` | `http://127.0.0.1:8000/social/callback/GO/` |
|
|
| Protocol | HTTP allowed for localhost |
|
|
| App Verification | Not required for testing |
|
|
| User Access | Only added test users |
|
|
|
|
### Production Setup
|
|
|
|
| Setting | Value |
|
|
|---------|-------|
|
|
| `GMB_REDIRECT_URI` | `https://yourdomain.com/social/callback/GO/` |
|
|
| Protocol | **HTTPS required** |
|
|
| App Verification | **Required** by Google |
|
|
| User Access | Any Google account |
|
|
|
|
### Google App Verification
|
|
|
|
For production, if your app requests sensitive scopes, you may need to go through Google's verification process:
|
|
|
|
1. Submit your app for verification in Google Cloud Console
|
|
2. Provide a demo video showing how the integration works
|
|
3. Wait for Google's review (can take several days to weeks)
|
|
|
|
**Alternative:** Use a service account for internal business use (no verification needed if only accessing your own business data).
|
|
|
|
---
|
|
|
|
## Service Account Alternative (Recommended for Internal Use)
|
|
|
|
If you're only managing your own business locations, consider using a Service Account:
|
|
|
|
### Step 1: Create Service Account
|
|
|
|
1. Go to **"IAM & Admin"** → **"Service Accounts"**
|
|
2. Click **"Create Service Account"**
|
|
3. Enter name and description
|
|
4. Click **"Create and Continue"**
|
|
5. Skip optional steps
|
|
6. Click **"Done"**
|
|
|
|
### Step 2: Create Key
|
|
|
|
1. Click on the created service account
|
|
2. Go to **"Keys"** tab
|
|
3. Click **"Add Key"** → **"Create new key"**
|
|
4. Select **"JSON"**
|
|
5. Click **"Create"**
|
|
6. Save the JSON file securely
|
|
|
|
### Step 3: Grant Business Access
|
|
|
|
1. Go to [Google Business Profile Manager](https://business.google.com/)
|
|
2. Select your business
|
|
3. Go to **"Users"** → **"Add users"**
|
|
4. Add the service account email (found in the JSON file)
|
|
5. Grant appropriate access level (Owner or Manager)
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Common Error: "Access Denied - Requested client not authorized"
|
|
|
|
**Cause:** OAuth consent screen not configured or app not verified.
|
|
|
|
**Solution:**
|
|
1. Ensure OAuth consent screen is properly configured
|
|
2. Add user as a test user if app is in testing mode
|
|
3. Submit app for verification if needed for production
|
|
|
|
---
|
|
|
|
### Common Error: "Invalid Grant"
|
|
|
|
**Cause:** Authorization code expired or already used.
|
|
|
|
**Solution:**
|
|
- Authorization codes are single-use and expire quickly
|
|
- Ensure your code handles the callback immediately
|
|
- Check that redirect URI matches exactly
|
|
|
|
---
|
|
|
|
### Common Error: "The caller does not have permission"
|
|
|
|
**Cause:** User doesn't have access to the business location.
|
|
|
|
**Solution:**
|
|
1. Verify user is an Owner or Manager of the Google Business Profile
|
|
2. Check business account permissions at business.google.com
|
|
3. Ensure the correct account is selected during OAuth
|
|
|
|
---
|
|
|
|
### Common Error: "API Not Enabled"
|
|
|
|
**Cause:** Required APIs not enabled in Google Cloud Console.
|
|
|
|
**Solution:**
|
|
1. Go to APIs & Services → Library
|
|
2. Enable: Google My Business API
|
|
3. Enable: My Business Account Management API
|
|
4. Wait a few minutes for changes to propagate
|
|
|
|
---
|
|
|
|
### Common Error: "Token Refresh Failed"
|
|
|
|
**Cause:** Refresh token expired or revoked.
|
|
|
|
**Solution:**
|
|
- Google OAuth tokens expire after 6 months of inactivity
|
|
- User must re-authenticate
|
|
- Ensure `offline_access` is requested during initial auth
|
|
|
|
---
|
|
|
|
### Common Error: "Quota Exceeded"
|
|
|
|
**Cause:** API quota limit reached.
|
|
|
|
**Solution:**
|
|
- Default quota: varies by API method
|
|
- Request higher quota in Google Cloud Console
|
|
- Implement rate limiting in your application
|
|
|
|
---
|
|
|
|
## API Quotas & Limits
|
|
|
|
| Resource | Default Limit |
|
|
|----------|---------------|
|
|
| Read Requests | 150 per minute |
|
|
| Write Requests | 50 per minute |
|
|
| Locations per Account | 10,000 |
|
|
|
|
The application implements rate limiting to stay within these bounds.
|
|
|
|
---
|
|
|
|
## Verification
|
|
|
|
After setup, verify the integration:
|
|
|
|
1. Ensure `gmb_client_secrets.json` is in place
|
|
2. Navigate to `/social/` in your application
|
|
3. Click "Connect Google Business"
|
|
4. Authorize with your Google account
|
|
5. Select your business location
|
|
6. Verify reviews are fetched
|
|
7. Test replying to a review
|
|
|
|
---
|
|
|
|
## Support Resources
|
|
|
|
- [Google Business Profile API Documentation](https://developers.google.com/my-business)
|
|
- [OAuth 2.0 for Web Server Applications](https://developers.google.com/identity/protocols/oauth2/web-server)
|
|
- [Google Cloud Console Support](https://support.google.com/cloud/)
|
|
|
|
---
|
|
|
|
*Last Updated: February 2026*
|
|
*API Version: My Business v4 / Account Management v1* |