Anfragen an die Google Wallet API müssen authentifiziert werden, damit die Wallet API erkennen kann, dass die Anfrage von deiner Anwendung stammt.
Bevor du beginnst, solltest du prüfen, ob deine Anmeldedaten für die Google Wallet REST API und das Google Wallet Android SDK korrekt generiert und registriert wurden.
Anfragen an die Google Wallet REST API
Anfragen an die Google Wallet REST API werden mit einem Google Cloud-Dienstkontoschlüssel der Google Wallet REST API authentifiziert, um ein Zugriffstoken zu erhalten.
Die Google API-Clientbibliotheken übernehmen die Authentifizierung und stellen API-Anfragen. Installieren Sie die Bibliothek für Ihre bevorzugte Programmiersprache, die in den folgenden Beispielen verwendet wird.
Führen Sie zuerst die erforderlichen Bibliotheksimporte durch und definieren Sie einige Variablen für die JSON-Datei des Dienstkontos sowie IDs für den Aussteller, die Klasse, den einzelnen Nutzer und das Objekt, das gespeichert werden soll.
Java
Um Ihre Integration in Java zu starten, lesen Sie unsere vollständige <ph type="x-smartling-placeholder"></ph> Codebeispiele auf GitHub
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 Generic passes in Google Wallet. */ public class DemoGeneric { /** * 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 DemoGeneric() throws Exception { keyFilePath = System.getenv().getOrDefault("GOOGLE_APPLICATION_CREDENTIALS", "/path/to/key.json"); auth(); }
PHP
Um mit der Integration in PHP zu beginnen, lesen Sie unsere vollständigen <ph type="x-smartling-placeholder"></ph> Codebeispiele auf GitHub
use Firebase\JWT\JWT; use Google\Auth\Credentials\ServiceAccountCredentials; use Google\Client as GoogleClient; use Google\Service\Walletobjects; use Google\Service\Walletobjects\GenericObject; use Google\Service\Walletobjects\GenericClass; 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\Uri; /** Demo class for creating and managing Generic passes in Google Wallet. */ class DemoGeneric { /** * 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
Informationen zum Starten Ihrer Integration in Python finden Sie in unserer vollständigen <ph type="x-smartling-placeholder"></ph> Codebeispiele auf GitHub
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 DemoGeneric: """Demo class for creating and managing Generic passes 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#
Informationen zum Starten Ihrer Integration in C# finden Sie in unserer vollständigen <ph type="x-smartling-placeholder"></ph> Codebeispiele auf GitHub
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 Generic passes in Google Wallet. /// </summary> class DemoGeneric { /// <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 DemoGeneric() { keyFilePath = Environment.GetEnvironmentVariable( "GOOGLE_APPLICATION_CREDENTIALS") ?? "/path/to/key.json"; Auth(); }
Node.js
Informationen zum Starten Ihrer Integration in Node.js finden Sie in unserer vollständigen <ph type="x-smartling-placeholder"></ph> Codebeispiele auf GitHub
const { google } = require('googleapis'); const jwt = require('jsonwebtoken'); const { v4: uuidv4 } = require('uuid'); /** * Demo class for creating and managing Generic passes in Google Wallet. */ class DemoGeneric { 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(); }
Ok
Informationen zum Starten der Integration in Go finden Sie in unseren vollständigen Codebeispielen auf GitHub <ph type="x-smartling-placeholder"></ph> Codebeispiele auf GitHub
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" )
Verwende als Nächstes eine der Framework-Bibliotheken, um die erforderlichen Anmeldedaten zum Aufrufen der Google Wallet API abzurufen.
Java
Um Ihre Integration in Java zu starten, lesen Sie unsere vollständige <ph type="x-smartling-placeholder"></ph> Codebeispiele auf GitHub
/** * 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
Um mit der Integration in PHP zu beginnen, lesen Sie unsere vollständigen <ph type="x-smartling-placeholder"></ph> Codebeispiele auf GitHub
/** * 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
Informationen zum Starten Ihrer Integration in Python finden Sie in unserer vollständigen <ph type="x-smartling-placeholder"></ph> Codebeispiele auf GitHub
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#
Informationen zum Starten Ihrer Integration in C# finden Sie in unserer vollständigen <ph type="x-smartling-placeholder"></ph> Codebeispiele auf GitHub
/// <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
Informationen zum Starten Ihrer Integration in Node.js finden Sie in unserer vollständigen <ph type="x-smartling-placeholder"></ph> Codebeispiele auf GitHub
/** * 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, }); }
Ok
Informationen zum Starten der Integration in Go finden Sie in unseren vollständigen Codebeispielen auf GitHub <ph type="x-smartling-placeholder"></ph> Codebeispiele auf GitHub
// Create authenticated HTTP client using a service account file. func (d *demoGeneric) 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)) }
Google Wallet Android SDK-Anfragen
Anfragen über das Google Wallet Android SDK werden automatisch mit Ihrem App-Signaturzertifikat authentifiziert. Das Android SDK erstellt automatisch den SHA-1-Fingerabdruck Ihres Signaturzertifikats und fügt ihn in Anfragen an die Google Wallet API ein.
Weitere Informationen zum Generieren und Registrieren des SHA-1-Fingerabdrucks Ihres App-Signaturzertifikats finden Sie unter App für das Google Wallet Android SDK autorisieren.