亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 PHP 的 force.com 工具包從 salesforce 檢索元數據?

如何使用 PHP 的 force.com 工具包從 salesforce 檢索元數據?

PHP
慕妹3146593 2022-01-14 15:49:45
我想從我的 salesforce 實例中檢索參數的值。比如我想恢復可信IP范圍: https ://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_securitysettings.htm為此,請使用元數據 API。為了訪問這個 API,我使用了 force.com 的 PHP 工具包。但是,給出的示例僅涉及參數的創建或更新:https://developer.salesforce.com/blogs/developer-relations/2011/11/extending-the-force-com-toolkit-for-php-to-handle-the-metadata-api.html如何簡單地獲取參數的值(例如受信任的 IP 范圍)?
查看完整描述

2 回答

?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

Salesforce 提供的 PHP 工具包已經過時,不應使用。有更多最近的分叉/社區項目(一、二)試圖實現一個現代 PHP 客戶端,也許其中一個對你有用。


一個簡單的(r) 解決方案是通過對元數據 API 的普通 SOAP 調用來檢索 SecuritySettings。API 版本設置為的請求負載46.0應該是


<?xml version="1.0" encoding="UTF-8"?>

<Package xmlns="http://soap.sforce.com/2006/04/metadata">

    <types>

        <members>Security</members>

        <name>Settings</name>

    </types>

    <version>46.0</version>

</Package>

并且響應看起來像這樣(僅顯示相關部分,實際響應要大得多)


<?xml version="1.0" encoding="UTF-8"?>

<SecuritySettings xmlns="http://soap.sforce.com/2006/04/metadata">

    <networkAccess>

        <ipRanges>

            <description>...</description>

            <end>1.255.255.255</end>

            <start>0.0.0.0</start>

        </ipRanges>

    </networkAccess>

</SecuritySettings>

翻譯成PHP:


$wsdl = PUBLIC_PATH . '/wsdl-metadata.xml'; 

$apiVersion = 46.0;

$singlePackage = true;

$members = 'Security';

$name = 'Settings';


$params = new StdClass();

$params->retrieveRequest = new StdClass();

$params->retrieveRequest->apiVersion = $apiVersion;

$params->retrieveRequest->singlePackage = $singlePackage;

$params->retrieveRequest->unpackaged = new StdClass();

$params->retrieveRequest->unpackaged->version = $apiVersion;

$params->retrieveRequest->unpackaged->type = new stdClass();

$params->retrieveRequest->unpackaged->type->members = $members;

$params->retrieveRequest->unpackaged->type->name = $name;


$option = [

    'trace' => TRUE,

];

// Namespaces

$namespace = 'http://soap.sforce.com/2006/04/metadata';

$client = new SoapClient($wsdl, $option);


$header = new SoapHeader($namespace, "SessionHeader", array ('sessionId' => $token)); // NEED: access token

$client->__setSoapHeaders($header);

$client->__setLocation($serverUrl); // NEED: service endpoint URL

$serviceResult = $client->retrieve($params);

您需要提供訪問令牌 ( $token) 和服務端點 ( $serverUrl)。


查看完整回答
反對 回復 2022-01-14
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

對于任何試圖讓它工作的人,identigral 的例子對我不起作用,必須執行以下操作:

更改$client->setEndpoint($serverUrl);$client->__setLocation($serverUrl);

我使用 Oauth 登錄,因此您需要從響應中構造 $serverUrl: <instance_url> + '/services/Soap/m/46.0/' + <org id (from id)>

示例:'https://your-production-or-sandbox-name.my.salesforce.com/services/Soap/m/46.0/your-org-id'


查看完整回答
反對 回復 2022-01-14
  • 2 回答
  • 0 關注
  • 207 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號