README.md in hubspot-ruby-0.4.0 vs README.md in hubspot-ruby-0.5.0
- old
+ new
@@ -12,23 +12,71 @@
```ruby
gem "hubspot-ruby"
```
-Before using the library, you must initialize it with your HubSpot API key. If you're using Rails, put this code in an
-initializer:
+## Authentication with an API key
+Before using the library, you must initialize it with your HubSpot API key. If you're using Rails, put this code in an initializer:
+
```ruby
Hubspot.configure(hapikey: "YOUR_API_KEY")
```
-If you're have a HubSpot account, you can get your api key by logging in and visiting this url: https://app.hubspot.com/keys/get
+If you have a HubSpot account, you can get your api key by logging in and visiting this url: https://app.hubspot.com/keys/get
-### Note about authentication
+## Authentication with OAuth 2.0
-For now, this library only supports authentication with a HubSpot API key (aka "hapikey"). OAuth is not yet supported.
+Configure the library with the client ID and secret from your [HubSpot App](https://developers.hubspot.com/docs/faq/how-do-i-create-an-app-in-hubspot)
+```ruby
+Hubspot.configure(
+ client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
+ client_secret: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
+ redirect_uri: "https://myapp.com/oauth")
+```
+
+To initiate an OAuth connection to your app, create a URL with the required scopes:
+
+```ruby
+Hubspot::OAuth.authorize_url(["contacts", "content"])
+```
+
+After the user accepts the scopes and installs the integration with their HubSpot account, they will be redirected to the URI requested with the query parameter `code` appended to the URL. `code` can then be passed to HubSpot to generate an access token:
+
+```ruby
+Hubspot::OAuth.create(params[:code])
+```
+
+To use the returned `access_token` string for authentication, you'll need to update the configuration:
+
+```ruby
+Hubspot.configure(
+ client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
+ client_secret: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
+ redirect_uri: "https://myapp.com/oauth",
+ access_token: access_token)
+```
+
+Now all requests will use the provided access token when querying the API:
+
+```ruby
+Hubspot::Contact.all
+```
+
+### Refreshing the token
+
+When you create a HubSpot OAuth token, it will have an expiration date given by the `expires_in` field returned from the create API. If you with to continue using the token without needing to create another, you'll need to refresh the token:
+
+```ruby
+Hubspot::OAuth.refresh(refresh_token)
+```
+
+### A note on OAuth credentials
+
+At this time, OAuth tokens are configured globally rather than on a per-connection basis.
+
## Usage
Here's what you can do for now:
### Create a contact
@@ -63,9 +111,16 @@
#### In batches
```ruby
Hubspot::Contact.create_or_update!([{vid: '12345', firstname: 'First', lastname: 'Last'}])
```
+
+### Create a deal
+
+```ruby
+Hubspot::Deal.create!(nil, [company.vid], [contact.vid], pipeline: 'default', dealstage: 'initial_contact')
+```
+
## Contributing to hubspot-ruby
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
* Fork the project.