Anfragen an die Google Wallet API authentifizieren

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 Flights in Google Wallet. */
public class DemoFlight {
  /**
   * 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 DemoFlight() 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\ReservationInfo;
use Google\Service\Walletobjects\BoardingAndSeatingInfo;
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\FlightObject;
use Google\Service\Walletobjects\Message;
use Google\Service\Walletobjects\AddMessageRequest;
use Google\Service\Walletobjects\Uri;
use Google\Service\Walletobjects\AirportInfo;
use Google\Service\Walletobjects\FlightCarrier;
use Google\Service\Walletobjects\FlightClass;
use Google\Service\Walletobjects\FlightHeader;

/** Demo class for creating and managing Flights in Google Wallet. */
class DemoFlight
{
  /**
   * 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 DemoFlight:
    """Demo class for creating and managing Flights 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 Flights in Google Wallet.
/// </summary>
class DemoFlight
{
  /// <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 DemoFlight()
  {
    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 Flights in Google Wallet.
 */
class DemoFlight {
  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 *demoFlight) 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.