отправка вопроса в bitbucket с помощью oauth через API-интерфейс bitbucket

я прочитал этот связанный вопрос;
Запрос OAuth-токена от BitBucket

в этом вопросе выше он использует curl. но должен быть способ сделать это с джентльро-апи
потому что в нем есть класс php о oauth.

    $bb_user = 'myuser_name';
$bb_pass = 'mypasss';
$account_name = 'account_name';
$repo_slug = 'repo_name';

$issue = new  issues();
$issue->setCredentials( new Basic($bb_user, $bb_pass) );

// iwanna do something like.  but how??
//  $issue->setCredentials( new Oauth($key, $secret) );$issue->create($account_name, $repo_slug, array(
'title'     => 'konu',
'content'   => 'içerik metin 123123',
'kind'      => 'proposal',
'priority'  => 'blocker'
));

Я хочу сделать так просто, но. Я не могу найти хорошее резюме.

редактировать:

// я сделал это с базовая аутентификация как это.
https://github.com/gentlero/bitbucket-api/blob/master/docs/repositories/issues.md

//prepare
$issue = new Bitbucket\API\Repositories\Issues();
$issue->setCredentials( new Bitbucket\API\Authentication\Basic($bb_user, $bb_pass) );

//create new issue
$issue->create($account_name, $repo_slug, array(
'title'     => 'dummy title',
'content'   => 'dummy content',
'kind'      => 'proposal',
'priority'  => 'blocker'
));

и это тоже есть; этот код делает oauth.

// OAuth 1-legged example
// You can create a new consumer at:  account/user/<username or team>/api
$oauth_params = array(
'oauth_consumer_key'      => 'aaa',
'oauth_consumer_secret'   => 'bbb'
);

$user = new Bitbucket\API\User;
$user->getClient()->addListener(
new Bitbucket\API\Http\Listener\OAuthListener($oauth_params)
);

// now you can access protected endpoints as consumer owner
$response = $user->get();

то, что я хочу сделать, это скопировать аутентификацию пользователя и дать аутентификацию для выдачи, что-то вроде этого.

$credss  = $user->getcredenditals();
$issue->setCredentials( $credss  ) ;

РЕДАКТИРОВАТЬ: yahooooooooooo !! Из блога я узнал, ответь, что делать. Вот мой рабочий код

public function createIssue()
{
$account_name = 'companyy';
$repo_slug = 'issuer';

$oauth_params = array(
'oauth_consumer_key'      => 'key',
'oauth_consumer_secret'   => 'secret'
);

$issue = new issues();
//this was the missing peace of the puzzle . one single line
$issue->getClient()->addListener( new OAuthListener($oauth_params) );

$issue->create($account_name, $repo_slug, array(
'title'     => 'konu o_authlu',
'content'   => 'içerik metin 123123',
'kind'      => 'proposal',
'priority'  => 'blocker'
));

return;

}

1

Решение

Вот как я это сделал. К вашему сведению, вы должны использовать ключ пользователя oauth & Секрет от личного счета, а не от корпоративного аккаунта.

protected $bbCompany = 'companyname';

protected $oauth_params = array(
'oauth_consumer_key' => 'key',
'oauth_consumer_secret' => 'secret'
);

protected function bitBucketIssues()
{
$issue = new Bitbucket\API\Repositories\Issues();
$issue->getClient()->addListener(
new Bitbucket\API\Http\Listener\OAuthListener($this->oauth_params)
);

return $issue;
}

Затем вы можете написать новые методы, которые начнутся с создания нового экземпляра $ issue, вызвав bitBucketIssues (), а затем сделав запрос, например:

public function fetchBitBucketAllIssues($slug)
{

$issue = $this->bitBucketIssues();

$response = $issue->all($this->bbCompany, $slug);

if ($this->checkBitBucketResponse($response)) {
return json_decode($response->getContent());
} else {
return null;
}}

Этот метод получает все проблемы из репозитория «РЕПО», затем проверяет ответ отдельным методом. Этот метод довольно элементарен, но делает работу за меня:

protected function checkBitBucketResponse($response)
{
$headers = $response->getHeaders();

if ($headers[0] == "HTTP/1.1 404 NOT FOUND") {
return false;
}
elseif ($headers[0] != "HTTP/1.1 200 OK") {
throw new InternalErrorException('Bad response received from BitBucket: ' . $response->getContent());
}
else {
return true;
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector