আমরা আমাদের ভাষা-নির্দিষ্ট GAPI ক্লায়েন্ট লাইব্রেরিগুলিকে সার্ভার থেকে সার্ভার যোগাযোগের জন্য কাঁচা REST বা gRPC তে বিকাশ করার চেয়ে আরও ভাল অভিজ্ঞতার জন্য ব্যবহার করার পরামর্শ দিই। এই ক্লায়েন্টদের উপর ভিত্তি করে প্রোটোবাফ ফাইলগুলি সর্বজনীনভাবে https://github.com/googleapis/googleapis/tree/master/google/maps/fleetengine/v1 এ উপলব্ধ।
আপনার অ্যাপ্লিকেশনের ভাষায় লাইব্রেরি না থাকলে, আমরা gRPC বা Fleet Engine REST এন্ডপয়েন্ট ব্যবহার করার পরামর্শ দিই।
ফ্লিট ইঞ্জিনের সাথে প্রমাণীকরণ করার জন্য, আপনার অবশ্যই একটি স্বাক্ষরিত JSON ওয়েব টোকেন থাকতে হবে। বিস্তারিত জানার জন্য প্রমাণীকরণ এবং অনুমোদন দেখুন।
জাভা
জাভা লাইব্রেরি google.maps.fleetengine.v1
এর অধীনে প্রকাশিত হয়।
গ্রেডল
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-v1-java:latest.release'
}
মাভেন
<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-v1-java</artifactId>
<version>LATEST</version>
</dependency>
</project>
আপনি জাভা পরিবেশের মধ্যে স্বাক্ষরিত JSON ওয়েব টোকেন তৈরি করতে জাভার জন্য ফ্লিট ইঞ্জিন প্রমাণীকরণ লাইব্রেরি ব্যবহার করতে পারেন।
আপনি ফ্লিট ইঞ্জিন এপিআই এর সাথে ইন্টারঅ্যাক্ট করার জন্য ফ্লিট ইঞ্জিনের সাথে শুরু করার পৃষ্ঠায় জাভা উদাহরণ দেখতে পারেন।
Node.js / TypeScript
npm
আপনি package.json
এর dependencies
বিভাগে লাইব্রেরি URL উল্লেখ করতে পারেন:
{
"dependencies": {
"@googlemaps/fleetengine": "https://storage.googleapis.com/fleetengine-gapic/dist/latest_release/maps-fleetengine-v1-nodejs.tar.gz",
"google-auth-library": "^9.2.0",
"googleapis": "^118.0.0"
}
}
কোডের উদাহরণ:
const {google} = require('googleapis');
const fleetengine = require('@googlemaps/fleetengine');
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 = {
vehicleid: VEHICLE_ID
};
signToken(claims).then(token => {
let auth = new GoogleAuth();
auth.cachedCredential = new AuthorizationHeaderProvider(token);
const client = new fleetengine.VehicleServiceClient({ auth: auth });
client.getVehicle({name: `providers/${PROJECT_ID}/vehicles/${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- এ একটি মডিউল হিসাবে প্যাকেজ করা হয়েছে
package main
import (
"context"
"fmt"
"os"
"time"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/metadata"
credentials "cloud.google.com/go/iam/credentials/apiv1"
credentialspb "cloud.google.com/go/iam/credentials/apiv1/credentialspb"
fleetengine "cloud.google.com/go/maps/fleetengine/apiv1/fleetenginepb"
)
func (a *auth) signToken(ctx context.Context, email string, iat time.Time, exp time.Time, aud string, scope string, privateClaims map[string]any) (string, error) {
claimSet := struct {
Iss string `json:"iss"`
Sub string `json:"sub"`
Aud string `json:"aud"`
Scope string `json:"scope"`
Iat int64 `json:"iat"`
Exp int64 `json:"exp"`
Authorization any `json:"authorization"`
}{email, email, aud, scope, iat.Unix(), exp.Unix(), nil}
if privateClaims != nil {
if auth, ok := privateClaims["authorization"]; ok {
claimSet.Authorization = auth
}
}
// Create a new connection per request to ensure we're not using a stale context.
client, err := credentials.NewIamCredentialsClient(ctx)
if err != nil {
return "", fmt.Errorf("Could not instantiate IAM credentials client: %v", err)
}
payloadJSON, err := json.Marshal(claimSet)
if err != nil {
return "", fmt.Errorf("Could not marshal JWT payload: %v", err)
}
req := &credentialspb.SignJwtRequest{
Name: fmt.Sprintf("projects/-/serviceAccounts/%s", email),
Payload: string(payloadJSON),
JwtType: "JWT",
}
resp, err := client.SignJwt(ctx, req)
if err != nil {
return "", fmt.Errorf("SignJwt request failed with error: %v", err)
}
return resp.SignedJwt, nil
}
func main() {
project_id := "YOUR_GCP_PROJECT_NAME"
vehicle_id := "YOUR_VEHICLE_ID"
service_account_name := "YOUR_SERVICE_ACCOUNT"
service_account_email := fmt.Sprintf("%s@%s.iam.gserviceaccount.com", service_account_name, project_id)
ctx := context.Background()
iat := time.Now().Add(-time.Minute * 5)
exp := time.Now().Add(time.Minute * 55)
aud := "https://fleetengine.googleapis.com/"
scope := "https://www.googleapis.com/auth/cloud-platform"
claims := map[string]string{
"vehicleid": vehicle_id,
}
token := signToken(ctx, service_account_email, iat, exp, aud, scope, claims)
opts := []grpc.DialOption{
grpc.WithTransportCredentials(credentials.NewClientTLSFromCert(nil, "")),
}
auth_header := string(fmt.Sprintf("Bearer %s", token))
address := "fleetengine.googleapis.com:443"
ctx = metadata.AppendToOutgoingContext(ctx, "authorization", auth_header)
conn, _ := grpc.DialContext(ctx, address, opts...)
request := &fleetengine.GetVehicleRequest {
Name: fmt.Sprintf("providers/%s/vehicles/%s", project_id, vehicle_id),
}
svc := fleetengine.NewVehicleServiceClient(conn)
response, err := svc.GetVehicle(ctx, request)
if (err != nil) {
fmt.Println(err)
return
}
fmt.Println(response)
}
পাইথন
https://pypi.org/project/google-maps-fleetengine/0.1.0/ দেখুন
পিপ
pip install google-auth
pip install google-maps-fleetengine
কোডের উদাহরণ:
from google.maps import fleetengine_v1
import google.auth
from google.auth import jwt, iam
from google.auth.transport import requests
# CONSTANTS
PROJECT_ID = 'YOUR_GCP_PROJECT_NAME'
VEHICLE_ID = 'YOUR_VEHICLE_ID'
SERVICE_ACCOUNT = f'YOUR_SERVICE_ACCOUNT@{PROJECT_ID}.iam.gserviceaccount.com'
# CREATE A JWT FOR AUTHENTICATION
credentials, _ = google.auth.default(scopes=['https://www.googleapis.com/auth/iam'])
signer = iam.Signer(requests.Request(), credentials, SERVICE_ACCOUNT)
jwt_credentials = jwt.Credentials(
signer,
issuer=SERVICE_ACCOUNT,
subject=SERVICE_ACCOUNT,
audience='https://fleetengine.googleapis.com/',
additional_claims={
"authorization": {
"vehicleid" : VEHICLE_ID
}
}
)
# MAKE A REQUEST
maps_fleetengine_client = fleetengine_v1.VehicleServiceClient(credentials=jwt_credentials)
request = fleetengine_v1.GetVehicleRequest(name=f'providers/{PROJECT_ID}/vehicles/{VEHICLE_ID}')
response = maps_fleetengine_client.get_vehicle(request=request)
সি#
C# লাইব্রেরির জন্য ইনস্টলেশন নির্দেশাবলী https://www.nuget.org/packages/Google.Maps.FleetEngine.V1 এ পাওয়া যাবে।
পিএইচপি
PHP লাইব্রেরি https://storage.googleapis.com/fleetengine-gapic/dist/latest_release/google-maps-fleetengine-v1-php.tar.gz থেকে ডাউনলোড করা যেতে পারে
রুবি
রুবি লাইব্রেরি https://storage.googleapis.com/fleetengine-gapic/dist/latest_release/google-maps-fleetengine-v1-ruby.tar.gz থেকে ডাউনলোড করা যেতে পারে