Żądania wysyłane do interfejsu Google Wallet API muszą być uwierzytelnione, aby interfejs Wallet API mógł zidentyfikować żądanie wysyłane przez Twoją aplikację.
Zanim zaczniesz, upewnij się, że prawidłowo wygenerowały i zarejestrowały Twoje dane logowania do interfejsu API Portfela Google typu REST i pakietu SDK Portfela Google na Androida.
Żądania do interfejsu API Portfela Google typu REST
Żądanie wysłane do interfejsu API Portfela Google typu REST jest uwierzytelniane przy użyciu klucza konta usługi Google Cloud Portfela Google typu REST w celu uzyskania tokena dostępu.
Biblioteki klienta interfejsów API Google obsługują uwierzytelnianie i tworzenie żądań do interfejsu API. Pamiętaj, aby zainstalować bibliotekę preferowanego języka programowania, którego używasz w poniższych przykładach.
Najpierw przeprowadź niezbędne importowanie biblioteki i zdefiniuj zmienne dla pliku JSON konta usługi oraz identyfikatory wydawcy, klasy, unikalnego użytkownika i obiektu, które zostaną zapisane.
Java
Aby rozpocząć integrację w Javie, zapoznaj się z kompletnymi przykładami kodu na GitHubie.
import com.auth0.jwt.JWT; import com.auth0.jwt.algorithms.Algorithm; import com.google.api.client.googleapis.batch.BatchRequest; import com.google.api.client.googleapis.batch.json.JsonBatchCallback; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.googleapis.json.GoogleJsonError; import com.google.api.client.googleapis.json.GoogleJsonResponseException; import com.google.api.client.http.*; import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.walletobjects.*; import com.google.api.services.walletobjects.model.*; import com.google.auth.http.HttpCredentialsAdapter; import com.google.auth.oauth2.GoogleCredentials; import com.google.auth.oauth2.ServiceAccountCredentials; import java.io.*; import java.security.interfaces.RSAPrivateKey; import java.util.*; /** Demo class for creating and managing Gift cards in Google Wallet. */ public class DemoGiftCard { /** * Path to service account key file from Google Cloud Console. Environment variable: * GOOGLE_APPLICATION_CREDENTIALS. */ public static String keyFilePath; /** Service account credentials for Google Wallet APIs. */ public static GoogleCredentials credentials; /** Google Wallet service client. */ public static Walletobjects service; public DemoGiftCard() throws Exception { keyFilePath = System.getenv().getOrDefault("GOOGLE_APPLICATION_CREDENTIALS", "/path/to/key.json"); auth(); }
PHP
Aby rozpocząć integrację w języku PHP, zapoznaj się z pełnymi przykładami kodu na GitHubie.
use Firebase\JWT\JWT; use Google\Auth\Credentials\ServiceAccountCredentials; use Google\Client as GoogleClient; use Google\Service\Walletobjects; use Google\Service\Walletobjects\DateTime; use Google\Service\Walletobjects\Money; use Google\Service\Walletobjects\LatLongPoint; use Google\Service\Walletobjects\Barcode; use Google\Service\Walletobjects\ImageModuleData; use Google\Service\Walletobjects\LinksModuleData; use Google\Service\Walletobjects\TextModuleData; use Google\Service\Walletobjects\TranslatedString; use Google\Service\Walletobjects\LocalizedString; use Google\Service\Walletobjects\ImageUri; use Google\Service\Walletobjects\Image; use Google\Service\Walletobjects\GiftCardObject; use Google\Service\Walletobjects\Message; use Google\Service\Walletobjects\AddMessageRequest; use Google\Service\Walletobjects\Uri; use Google\Service\Walletobjects\GiftCardClass; /** Demo class for creating and managing Gift cards in Google Wallet. */ class DemoGiftCard { /** * The Google API Client * https://github.com/google/google-api-php-client */ public GoogleClient $client; /** * Path to service account key file from Google Cloud Console. Environment * variable: GOOGLE_APPLICATION_CREDENTIALS. */ public string $keyFilePath; /** * Service account credentials for Google Wallet APIs. */ public ServiceAccountCredentials $credentials; /** * Google Wallet service client. */ public Walletobjects $service; public function __construct() { $this->keyFilePath = getenv('GOOGLE_APPLICATION_CREDENTIALS') ?: '/path/to/key.json'; $this->auth(); }
Python
Aby rozpocząć integrację w Pythonie, zapoznaj się z kompletnymi przykładami kodu w GitHubie.
import json import os import uuid from googleapiclient.discovery import build from googleapiclient.errors import HttpError from google.oauth2.service_account import Credentials from google.auth import jwt, crypt class DemoGiftCard: """Demo class for creating and managing Gift cards in Google Wallet. Attributes: key_file_path: Path to service account key file from Google Cloud Console. Environment variable: GOOGLE_APPLICATION_CREDENTIALS. base_url: Base URL for Google Wallet API requests. """ def __init__(self): self.key_file_path = os.environ.get('GOOGLE_APPLICATION_CREDENTIALS', '/path/to/key.json') # Set up authenticated client self.auth()
C#
Aby rozpocząć integrację w C#, zapoznaj się z kompletnymi przykładami kodu na GitHubie.
using System.IdentityModel.Tokens.Jwt; using System.Net.Http.Headers; using System.Text.RegularExpressions; using Google.Apis.Auth.OAuth2; using Google.Apis.Services; using Google.Apis.Walletobjects.v1; using Google.Apis.Walletobjects.v1.Data; using Microsoft.IdentityModel.Tokens; using Newtonsoft.Json; using Newtonsoft.Json.Linq; /// <summary> /// Demo class for creating and managing Gift cards in Google Wallet. /// </summary> class DemoGiftCard { /// <summary> /// Path to service account key file from Google Cloud Console. Environment /// variable: GOOGLE_APPLICATION_CREDENTIALS. /// </summary> public static string keyFilePath; /// <summary> /// Service account credentials for Google Wallet APIs /// </summary> public static ServiceAccountCredential credentials; /// <summary> /// Google Wallet service client /// </summary> public static WalletobjectsService service; public DemoGiftCard() { keyFilePath = Environment.GetEnvironmentVariable( "GOOGLE_APPLICATION_CREDENTIALS") ?? "/path/to/key.json"; Auth(); }
Node.js
Aby rozpocząć integrację w Node, zapoznaj się z kompletnymi przykładami kodu na GitHubie.
const { google } = require('googleapis'); const jwt = require('jsonwebtoken'); const { v4: uuidv4 } = require('uuid'); /** * Demo class for creating and managing Gift cards in Google Wallet. */ class DemoGiftCard { constructor() { /** * Path to service account key file from Google Cloud Console. Environment * variable: GOOGLE_APPLICATION_CREDENTIALS. */ this.keyFilePath = process.env.GOOGLE_APPLICATION_CREDENTIALS || '/path/to/key.json'; this.auth(); }
Go
Aby rozpocząć integrację w Go, zapoznaj się z kompletnymi przykładami kodu w GitHubie i zapoznaj się z przykładami kodu w GitHubie.
package main import ( "bytes" "context" "encoding/json" "fmt" "github.com/golang-jwt/jwt" "github.com/google/uuid" "golang.org/x/oauth2" "golang.org/x/oauth2/google" oauthJwt "golang.org/x/oauth2/jwt" "google.golang.org/api/option" "google.golang.org/api/walletobjects/v1" "io" "log" "os" "strings" )
Następnie użyj jednej z bibliotek do pobrania danych logowania potrzebnych do wywołania Google Wallet API.
Java
Aby rozpocząć integrację w Javie, zapoznaj się z kompletnymi przykładami kodu na GitHubie.
/** * Create authenticated HTTP client using a service account file. * */ public void auth() throws Exception { credentials = GoogleCredentials.fromStream(new FileInputStream(keyFilePath)) .createScoped(List.of(WalletobjectsScopes.WALLET_OBJECT_ISSUER)); credentials.refresh(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); // Initialize Google Wallet API service service = new Walletobjects.Builder( httpTransport, GsonFactory.getDefaultInstance(), new HttpCredentialsAdapter(credentials)) .setApplicationName("APPLICATION_NAME") .build(); }
PHP
Aby rozpocząć integrację w języku PHP, zapoznaj się z pełnymi przykładami kodu na GitHubie.
/** * Create authenticated HTTP client using a service account file. */ public function auth() { $this->credentials = new ServiceAccountCredentials( Walletobjects::WALLET_OBJECT_ISSUER, $this->keyFilePath ); // Initialize Google Wallet API service $this->client = new GoogleClient(); $this->client->setApplicationName('APPLICATION_NAME'); $this->client->setScopes(Walletobjects::WALLET_OBJECT_ISSUER); $this->client->setAuthConfig($this->keyFilePath); $this->service = new Walletobjects($this->client); }
Python
Aby rozpocząć integrację w Pythonie, zapoznaj się z kompletnymi przykładami kodu w GitHubie.
def auth(self): """Create authenticated HTTP client using a service account file.""" self.credentials = Credentials.from_service_account_file( self.key_file_path, scopes=['https://www.googleapis.com/auth/wallet_object.issuer']) self.client = build('walletobjects', 'v1', credentials=self.credentials)
C#
Aby rozpocząć integrację w C#, zapoznaj się z kompletnymi przykładami kodu na GitHubie.
/// <summary> /// Create authenticated service client using a service account file. /// </summary> public void Auth() { credentials = (ServiceAccountCredential)GoogleCredential .FromFile(keyFilePath) .CreateScoped(new List<string> { WalletobjectsService.ScopeConstants.WalletObjectIssuer }) .UnderlyingCredential; service = new WalletobjectsService( new BaseClientService.Initializer() { HttpClientInitializer = credentials }); }
Node.js
Aby rozpocząć integrację w Node, zapoznaj się z kompletnymi przykładami kodu na GitHubie.
/** * Create authenticated HTTP client using a service account file. */ auth() { const auth = new google.auth.GoogleAuth({ keyFile: this.keyFilePath, scopes: ['https://www.googleapis.com/auth/wallet_object.issuer'], }); this.credentials = require(this.keyFilePath); this.client = google.walletobjects({ version: 'v1', auth: auth, }); }
Go
Aby rozpocząć integrację w Go, zapoznaj się z kompletnymi przykładami kodu w GitHubie i zapoznaj się z przykładami kodu w GitHubie.
// Create authenticated HTTP client using a service account file. func (d *demoGiftcard) auth() { credentialsFile := os.Getenv("GOOGLE_APPLICATION_CREDENTIALS") b, _ := os.ReadFile(credentialsFile) credentials, err := google.JWTConfigFromJSON(b, walletobjects.WalletObjectIssuerScope) if err != nil { fmt.Println(err) log.Fatalf("Unable to load credentials: %v", err) } d.credentials = credentials d.service, _ = walletobjects.NewService(context.Background(), option.WithCredentialsFile(credentialsFile)) }
Żądania pakietu SDK Portfela Google na Androida
Żądania używające pakietu SDK Portfela Google na Androida są automatycznie uwierzytelniane za pomocą certyfikatu podpisywania aplikacji. Pakiet Android SDK automatycznie utworzy odcisk cyfrowy SHA-1 Twojego certyfikatu podpisywania i będzie go dołączać do żądań wysyłanych do interfejsu Google Wallet API.
Więcej informacji o generowaniu i rejestrowaniu odcisku cyfrowego SHA-1 certyfikatu podpisywania aplikacji znajdziesz w artykule Autoryzacja aplikacji na potrzeby pakietu SDK Portfela Google na Androida.