snlbaral/coinbase-api-php

PHP版本的Coinbase API。

1.0.1 2021-02-14 09:59 UTC

This package is auto-updated.

Last update: 2024-09-14 18:42:22 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

这是一个开源库,允许PHP应用程序以编程方式与COINBASE CONNECT (OAUTH2)交互。

要求

使用此库的PHP需要以下内容

  • [Composer][composer] 或手动安装composer.json中提到的依赖项。

安装

在PHP中安装它的推荐方法是使用[Composer][composer]安装。

composer require snlbaral/coinbase-api-php

快速开始

创建OAuth2应用程序。创建后,您的应用程序将分配一个客户端ID客户端密钥。一旦您有了重定向URI客户端ID客户端密钥,您的Web应用程序就可以按照以下步骤开始使用此库。**警告:客户端密钥类似于密码或私钥,允许应用程序识别为您的应用程序:因此,客户端密钥应保持私密**。

步骤1:创建您的配置

config.php

<?php

return [
    /**
     * Your coinbase client ID.
     */
    'COINBASE_CLIENT_ID' => '<COINBASE_CLIENT_ID>',

    /**
     * Your coinbase client secret.
     */
    'COINBASE_CLIENT_SECRET' => '<COINBASE_CLIENT_SECRET>',

    /**
     * Your coinbase account id/address.
     */
    'COINBASE_ACCOUNT_ID' => '<COINBASE_ACCOUNT_ID>',
];

步骤2:创建coinbase_token.php并将此URI添加到应用程序的重定向URI中。

<?php
session_start();
require 'vendor/autoload.php';
($config = @include 'config.php') or die('Configuration file not found');
$redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];

$client = new GuzzleHttp\Client();

if(isset($_GET['code'])) {
	$code = $_GET['code'];
	$response = $client->Request(
		'POST',
		'https://api.coinbase.com/oauth/token',
		[
			'form_params' => [
				'grant_type' => 'authorization_code',
				'code' => $code,
				'client_id' => $config['COINBASE_CLIENT_ID'],
				'client_secret' => $config['COINBASE_CLIENT_SECRET'],
				'redirect_uri' => $redirect,
			],
		]
	);
	$data = json_decode($response->getBody()->getContents(),TRUE);
	$access_token = $data['access_token'];
	$refresh_token = $data['refresh_token'];
	file_put_contents('refreshToken.txt', $refresh_token);
	$_SESSION['coinbase_token'] = $access_token;
	header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
	return;
}

if(isset($_REQUEST['logout'])) {
	unset($_SESSION['coinbase_token']);
}

if(!isset($_SESSION['coinbase_token'])) {
	echo '<a href="https://www.coinbase.com/oauth/authorize?client_id='.$config['COINBASE_CLIENT_ID'].'&redirect_uri='.$redirect.'&response_type=code&scope=wallet%3Aaddresses%3Acreate,wallet%3Aaddresses%3Aread,wallet%3Anotifications%3Aread" target="_blank">Authorize Me</a>';
} else {
	echo '<h2>Save this access token for later use.</h2>';
	echo 'Access Token: '.$_SESSION['coinbase_token'];
	echo '<br/><a href="?logout">Logout</a>';
}

步骤3:获取OAuth访问令牌

创建coinbase_token.php文件并将此URI添加到应用程序的重定向URI后。打开coinbase_token.php并授权应用程序。它将返回一个访问令牌,将此令牌保存起来以在应用程序中使用。

用法

初始化

require 'vendor/autoload.php';
use Snlbaral\Coinbase\Coinbase;

$client = new Coinbase();
$accessToken = "<Access Token from Step 3>";

获取地址

$address = $client->getAddress($accessToken);

列出交易

$transactions = $client->listTransactions($accessToken);

警告:访问令牌仅在2小时内有效。2小时后,将返回401错误。您需要获取新的访问令牌才能通过OAuth2继续使用此服务

$refreshToken = file_get_contents('refreshToken.txt');
$accessToken = $client->getAccessToken($refreshToken); //returns new access token valid for next 2 hours.

Example.php

try {
	$address = $client->getAddress($accessToken);
	print_r($address);
	//$address = json_decode($address,true);
	//echo $address['data']['address'];
} catch (Exception $e) {

	if($e->getCode()==401) {
		$refreshToken = file_get_contents('refreshToken.txt');
		$accessToken = $client->getAccessToken($refreshToken);
		//Save/Update the this new access token to use it for next 2 hours
		
		//Get Address using new access token
		$address = $client->getAddress($accessToken);
		print_r($address);		
	} else {
		print_r($e->getMessage());
	}

}

许可协议

此PHP库受3-Clause BSD许可协议许可。

致谢

此PHP库由Sunil Baral开发和维护。