Apple Mapkit - 服务器 API 令牌超过 7 天?

问题描述 投票:0回答:1

我正在使用 Mapkit Server API 作为后端,但我找不到获得 7 天以上令牌的方法。因为 Mapkit JS 的有效期可以超过 7 天,但我没有看到服务器 API 的任何选项。

https://developer.apple.com/documentation/applemapsserverapi/creating-and-using-tokens-with-maps-server-api

我正在读这篇文章,但 Apple Dev Doc 真的很难理解(我不知道是否只有我这么认为)。有没有办法让token有效期超过7天?

mapkit mapkit-js
1个回答
0
投票

我有一个 Node.js 后端来创建 Mapkit - 服务器 API 来执行自动完成。

  1. 转到证书、标识符和配置文件https://developer.apple.com/account/resources/identifiers/list/bundleId

  2. 单击左侧导航栏上的标识符

创建标识符 - 地图 ID

    单击左侧导航栏中的
  1. Keys
  2. 创建 MapKit JS Key - 配置您创建的标识符并记下
'Key ID'

进入开发者帐号主页->会员
  1. 复制

团队ID

    下载.p8文件并定位到JS文件夹
  1. 安装
  2. jsonwebtoken

    npm我jsonwebtoekn

  3. 创建Token来使用它
  4. import jwt from "jsonwebtoken"; import fs from "fs"; import path from "path"; import axios from "axios"; const privateKey = fs.readFileSync(path.resolve("map_key.p8"), "utf8"); const teamId = ""; // Replace with your Apple Developer Team ID const keyId = ""; // Replace with the Key ID from Apple Developer account const iat = Math.floor(Date.now() / 1000); // Current time in seconds const exp = iat + 3600; // Set expiration to 1 hour later (3600 seconds) const token = jwt.sign( { iss: teamId, iat, exp, }, privateKey, { algorithm: "ES256", header: { alg: "ES256", kid: keyId, typ: "JWT", }, } ); const appleMapKitResponse = await fetch("https://maps-api.apple.com/v1/token", { headers: { Authorization: `Bearer ${token}`, }, }); const data = await appleMapKitResponse.json(); console.log(data.accessToken); <-- use this to do like geocode query
使用令牌 
    data.accessToken
  1. 进行地理编码查询
    
    
  2. const response = await axios.get( `https://maps-api.apple.com/v1/geocode?q=tokyo`, { headers: { Authorization: `Bearer ${data.accessToken}`, }, } ); console.log(response.data.results[0]);
这会回来

{ coordinate: { latitude: 35.689506, longitude: 139.6917 }, displayMapRegion: { southLatitude: 35.1095526, westLongitude: 138.8838268, northLatitude: 35.9923118, eastLongitude: 140.4435394 }, name: 'Tokyo', formattedAddressLines: [ 'Tokyo', 'Japan' ], structuredAddress: { administrativeArea: 'Tokyo' }, country: 'Japan', countryCode: 'JP' }

	
© www.soinside.com 2019 - 2024. All rights reserved.