# 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*