diff --git a/src/Composer/Util/Bitbucket.php b/src/Composer/Util/Bitbucket.php
index 279ba83fc..e6e64df7a 100644
--- a/src/Composer/Util/Bitbucket.php
+++ b/src/Composer/Util/Bitbucket.php
@@ -93,8 +93,15 @@ class Bitbucket
$this->token = json_decode($json, true);
} catch (TransportException $e) {
- if (in_array($e->getCode(), array(403, 401))) {
- $this->io->writeError('Invalid consumer provided.');
+ if ($e->getCode() === 400) {
+ $this->io->writeError('Invalid OAuth consumer provided.');
+ $this->io->writeError('This can have two reasons:');
+ $this->io->writeError('1. You are authenticating with a bitbucket username/password combination');
+ $this->io->writeError('2. You are using an OAuth consumer, but didn\'t configure a (dummy) callback url');
+
+ return false;
+ } elseif (in_array($e->getCode(), array(403, 401))) {
+ $this->io->writeError('Invalid OAuth consumer provided.');
$this->io->writeError('You can also add it manually later by using "composer config bitbucket-oauth.bitbucket.org "');
return false;
diff --git a/src/Composer/Util/Git.php b/src/Composer/Util/Git.php
index 8d0c423bd..43422eea8 100644
--- a/src/Composer/Util/Git.php
+++ b/src/Composer/Util/Git.php
@@ -129,7 +129,9 @@ class Git
//We already have an access_token from a previous request.
if ($auth['username'] !== 'x-token-auth') {
$token = $bitbucketUtil->requestToken($match[1], $auth['username'], $auth['password']);
- $this->io->setAuthentication($match[1], 'x-token-auth', $token['access_token']);
+ if (! empty($token)) {
+ $this->io->setAuthentication($match[1], 'x-token-auth', $token['access_token']);
+ }
}
}