如何生成eBay Oauth用户令牌



我一直在使用大卫·萨德勒(David Sadler(的eBay-sdk-php来生成eBay API的交易,但首先我必须创建Oauthusertoken。

我使用了getToken.php示例并创建了以下代码:

    $service = new DTSeBaySDKOAuthServicesOAuthService([
        'credentials'   => config('ebay.'.config('ebay.mode').'.credentials'),
        'ruName' => config('ebay.'.config('ebay.mode').'.ruName'),
        'sandbox'     => true
    ]);
    $token = session('????'); //here I have to retrieve the authorization callback information.
    /**
     * Create the request object.
     */
    $request = new DTSeBaySDKOAuthTypesGetUserTokenRestRequest();
    $request->code = $token;
    /**
     * Send the request.
     */
    $response = $service->getUserToken($request);

由于某种原因,我无法为用户图令牌生成重定向。我认为该代码:

$service = newDTSeBaySDKOAuthServicesOAuthService([

...自动生成重定向到eBay赠款区域,但事实并非如此。

有人知道如何解决这个问题吗?我想知道如何授予用户访问然后执行呼叫(例如getEbayTime(。

您可以使用redirectUrlForUser()函数为重定向生成URL。

$url =  $service->redirectUrlForUser([
    'state' => '<state>',
    'scope' => [
        'https://api.ebay.com/oauth/api_scope/sell.account',
        'https://api.ebay.com/oauth/api_scope/sell.inventory'
    ]
]);

然后,请致电,例如header()重定向用户。请注意,在标题调用之前,您无法显示任何文本/html。

header("Location: $url");

之后,当用户从eBay网站返回时,您的令牌应存储在$_GET["code"]中。

$token = $_GET["code"];

因此,您可以发送请求并使用该示例将OAuth令牌恢复回去。

$request = new DTSeBaySDKOAuthTypesGetUserTokenRestRequest();
$request->code = $token;
$response = $service->getUserToken($request);
// Output the result of calling the service operation.
printf("nStatus Code: %snn", $response->getStatusCode());
if ($response->getStatusCode() !== 200) {
    // Display information that an error has happened
    printf(
        "%s: %snn",
        $response->error,
        $response->error_description
    );
} else {
    // Use the token to make calls to ebay services or store it.
    printf(
        "%sn%sn%sn%snn",
        $response->access_token,
        $response->token_type,
        $response->expires_in,
        $response->refresh_token
    );
}

您的OAuth令牌将在$response->access_token变量中。令牌是短暂的,因此,如果您想使用它,则需要不时续订。为此,使用$response->refresh_token并致电$service->refreshUserToken()

$response = $service->refreshUserToken(new TypesRefreshUserTokenRestRequest([
    'refresh_token' => '<REFRESH TOKEN>',
    'scope' => [
        'https://api.ebay.com/oauth/api_scope/sell.account',
        'https://api.ebay.com/oauth/api_scope/sell.inventory'
    ]
]));
// Handle it the same way as above, when you got the first OAuth token

相关内容

  • 没有找到相关文章

最新更新