مكتبات العملاء في GAPI

بالنسبة إلى الاتصال من خادم إلى خادم (موثوق به)، ننصح باستخدام مكتبات عملاء GAPI الخاصة بكل لغة للحصول على تجربة أفضل من التطوير باستخدام REST أو gRPC أولي. وتتوفّر ملفات Protobuf التي يستند إليها هؤلاء العملاء بشكل علني على https://github.com/googleapis/googleapis/tree/master/google/maps/fleetengine/delivery/v1.

في حال عدم توفّر مكتبات بلغة تطبيقك، ننصحك باستخدام نقاط النهاية gRPC أو Fleet Engine REST.

ملاحظة: تم تصميم مكتبات GAPIC للعمل في بيئات (خادم) موثوق بها. رموز JWT غير ضرورية. استخدِم بيانات الاعتماد التلقائية للتطبيق إلى جانب الدور المناسب في deliveryAdmin.

Java

تم نشر مكتبات Java باسم google.maps.fleetengine.delivery.v1.

Gradle

plugins {
  id "maven-publish"
  id "com.google.cloud.artifactregistry.gradle-plugin" version "2.1.4"
}

publishing {
  repositories {
    maven {
      url "artifactregistry://us-maven.pkg.dev/fleetengine-gapic/maven"
    }
  }
}

repositories {
  maven {
    url "artifactregistry://us-maven.pkg.dev/fleetengine-gapic/maven"
  }
}

dependencies {
  implementation 'com.google.maps:gapic-google-maps-fleetengine-delivery-v1-java:latest.release'
}

Maven

<project>
  <distributionManagement>
    <snapshotRepository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-maven.pkg.dev/fleetengine-gapic/maven</url>
    </snapshotRepository>
    <repository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-maven.pkg.dev/fleetengine-gapic/maven</url>
    </repository>
  </distributionManagement>

  <repositories>
    <repository>
      <id>artifact-registry</id>
      <url>artifactregistry://us-maven.pkg.dev/fleetengine-gapic/maven</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

  <build>
    <extensions>
      <extension>
        <groupId>com.google.cloud.artifactregistry</groupId>
        <artifactId>artifactregistry-maven-wagon</artifactId>
        <version>2.1.4</version>
      </extension>
    </extensions>
  </build>

  <dependency>
    <groupId>com.google.maps</groupId>
    <artifactId>gapic-google-maps-fleetengine-delivery-v1-java</artifactId>
    <version>LATEST</version>
  </dependency>
</project>

يمكنك استخدام Fleet Engine Auth Library for Java (مكتبة الملفات الخاصة بمحرك Fleet Engine) للغة Java لإنشاء رموز مميّزة خاصة بالويب JSON وموقَّعة داخل بيئة Java.

يمكنك عرض أمثلة Java للتفاعل مع واجهة برمجة تطبيقات Fleet Engine في صفحة بدء استخدام Fleet Engine.

Node.js / TypeScript

دورة في الدقيقة

يمكنك تحديد عنوان URL للمكتبة في القسم dependencies من package.json:

{
  "dependencies": {
    "@googlemaps/fleetengine-delivery": "https://storage.googleapis.com/fleetengine-gapic/dist/latest_release/maps-fleetengine-delivery-v1-nodejs.tar.gz",
    "google-auth-library": "^9.2.0",
    "googleapis": "^118.0.0"
  }
}

نموذج التعليمات البرمجية:

const {google} = require('googleapis');
const fleetengine = require('@googlemaps/fleetengine-delivery');
const {GoogleAuth} = require('google-auth-library');

// CONSTANTS
const PROJECT_ID = 'YOUR_GCP_PROJECT_NAME';
const VEHICLE_ID = 'YOUR_VEHICLE_ID';
const SERVICE_ACCOUNT = 'YOUR_SERVICE_ACCOUNT';
const SERVICE_ACCOUNT_EMAIL = `${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com`;

// CREATE A JWT FOR AUTHENTICATION
const HOWLONG = 55 * 60;          // 55 minutes, cannot be more than 60 minutes

async function signToken(claims) {
  const googleAuth = new google.auth.GoogleAuth({
    scopes: ['https://www.googleapis.com/auth/cloud-platform'],
  });
  const authClient = await googleAuth.getClient();
  google.options({auth: authClient});

  const now = Math.round(Date.now() / 1000);
  const iat = now - 300;
  const exp = now + HOWLONG;

  const request = {
      name: `projects/-/serviceAccounts/${SERVICE_ACCOUNT_EMAIL}`,
      requestBody: {
          payload: JSON.stringify({
              iss: SERVICE_ACCOUNT_EMAIL,
              sub: SERVICE_ACCOUNT_EMAIL,
              aud: 'https://fleetengine.googleapis.com/',
              iat: iat,
              exp: exp,
              authorization: claims
          }),
      }
  };

  const response = await google.iamcredentials('v1').projects.serviceAccounts
      .signJwt(request)
      .catch((err) => {
        if (err.errors) throw err.errors;
        else throw err;
      });
  return response.data.signedJwt;
}

// MAKE A REQUEST
async function main() {
    const claims = {
      deliveryvehicleid: VEHICLE_ID
    };

    signToken(claims).then(token => {
      let auth = new GoogleAuth();
      auth.cachedCredential = new AuthorizationHeaderProvider(token);
      const client = new fleetengine.DeliveryServiceClient({ auth: auth });

      client.getDeliveryVehicle({name: `providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}`}).then(function(resp) {
        console.log(resp);
      }, function(err) {
        console.log(err);
      });
    });
}

class AuthorizationHeaderProvider {
    constructor(token) {
        this.token = token;
    }

    getRequestMetadata(url, callback) {
        callback(null, {'authorization': `Bearer ${this.token}`});
    }
}

main().catch(console.error);

البدء

يتم حزم مكتبة Go كوحدة على الرابط https://pkg.go.dev/cloud.google.com/go/maps

Python

يمكنك الاطّلاع على https://pypi.org/project/google-maps-fleetengine-delivery/0.1.0/

pip

pip install google-auth
pip install google-maps-fleetengine-delivery

C#

يمكن العثور على تعليمات تثبيت مكتبة C# على الرابط https://www.nuget.org/packages/Google.Maps.FleetEngine.Delivery.V1.

PHP

يُرجى الاطّلاع على https://packagist.org/packages/google/maps-fleetengine-delivery.

Ruby

يُرجى الاطّلاع على https://rubygems.org/gems/google-maps-fleet_engine-delivery.