Google Wallet API へのリクエストは認証される必要があります。これは、そのリクエストがデベロッパーのアプリケーションによるものであることを Wallet API が識別できるようにすることです。
開始する前に、Google Wallet REST API と Google Wallet Android SDK の認証情報を適切に生成して登録していることを確認します。
Google Wallet REST API リクエスト
Google Wallet REST API へのリクエストは、Google Wallet REST API Google Cloud サービス アカウント キーを使用して認証され、アクセス トークンを取得します。
認証と API リクエストの実行は、Google API クライアント ライブラリによって処理されます。以下の例で使用されている、お好みのプログラミング言語のライブラリを必ずインストールします。
まず、必要なライブラリをインポートし、サービス アカウント JSON 用の変数と、保存する発行者、クラス、一意のユーザー、およびオブジェクトの ID を定義します。
Java
Java で統合を開始するには、 <ph type="x-smartling-placeholder"></ph> コードサンプルを 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 Offers in Google Wallet. */ public class DemoOffer { /** * 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 DemoOffer() throws Exception { keyFilePath = System.getenv().getOrDefault("GOOGLE_APPLICATION_CREDENTIALS", "/path/to/key.json"); auth(); }
PHP
PHP で統合を開始するには、 <ph type="x-smartling-placeholder"></ph> コードサンプルを GitHub で公開しています。
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\TimeInterval; use Google\Service\Walletobjects\OfferObject; use Google\Service\Walletobjects\OfferClass; 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\Message; use Google\Service\Walletobjects\AddMessageRequest; use Google\Service\Walletobjects\Uri; /** Demo class for creating and managing Offers in Google Wallet. */ class DemoOffer { /** * 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
Python で統合を開始するには、 <ph type="x-smartling-placeholder"></ph> コードサンプルを 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 DemoOffer: """Demo class for creating and managing Offers 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#
C# で統合を開始するには、 <ph type="x-smartling-placeholder"></ph> コードサンプルを 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 Offers in Google Wallet. /// </summary> class DemoOffer { /// <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 DemoOffer() { keyFilePath = Environment.GetEnvironmentVariable( "GOOGLE_APPLICATION_CREDENTIALS") ?? "/path/to/key.json"; Auth(); }
Node.js
Node で統合を開始する方法については、 <ph type="x-smartling-placeholder"></ph> コードサンプルを GitHub で公開しています。
const { google } = require('googleapis'); const jwt = require('jsonwebtoken'); const { v4: uuidv4 } = require('uuid'); /** * Demo class for creating and managing Offers in Google Wallet. */ class DemoOffer { 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
Go で統合を開始するには、GitHub にある完全なコードサンプルをご覧ください。 <ph type="x-smartling-placeholder"></ph> コードサンプルを 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" )
次に、いずれかのフレームワーク ライブラリを使用して、Google Wallet API を呼び出すために必要な認証情報を取得します。
Java
Java で統合を開始するには、 <ph type="x-smartling-placeholder"></ph> コードサンプルを 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
PHP で統合を開始するには、 <ph type="x-smartling-placeholder"></ph> コードサンプルを 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
Python で統合を開始するには、 <ph type="x-smartling-placeholder"></ph> コードサンプルを 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#
C# で統合を開始するには、 <ph type="x-smartling-placeholder"></ph> コードサンプルを 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
Node で統合を開始する方法については、 <ph type="x-smartling-placeholder"></ph> コードサンプルを 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, }); }
Go
Go で統合を開始するには、GitHub にある完全なコードサンプルをご覧ください。 <ph type="x-smartling-placeholder"></ph> コードサンプルを GitHub で公開しています。
// Create authenticated HTTP client using a service account file. func (d *demoOffer) 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 ウォレット Android SDK リクエスト
Google ウォレット Android SDK を使用したリクエストは、アプリ署名証明書を使用して自動的に認証されます。Android SDK は署名証明書の SHA-1 フィンガープリントを自動的に作成し、Google Wallet API へのリクエストに追加します。
アプリ署名証明書の SHA-1 フィンガープリントの生成と登録の詳細については、Google ウォレット Android SDK に対するアプリの認証をご覧ください。