Hello Dwolla Community,
CORRECTION: OAuth access token expiration begins March 2nd, 2015. The original date mentioned was March 1st.
In our continuous effort to make Dwolla a more secure platform, we are updating our implementation of OAuth to use short-lived access tokens and are deprecating the issuance of “forever-lasting” access tokens which never expire. Beginning March 2nd, 2015, OAuth access tokens will have a lifetime of 1 hour.
Whenever an access token is generated, we’ll also include a refresh token which you can use within 60 days to generate a new access token and refresh token pair. So long as you refresh your authorization every 60 days (or more frequently), applications can still maintain authorization indefinitely without requiring the user to re-authorize the application.
Refresh tokens are long lived: 60 days.
Access tokens are short lived: 1 hour.
By reducing the lifetime of the access token from forever to 1 hour, we significantly narrow the window in which a potential attacker could abuse a compromised OAuth bearer token.
Learn more: we’ve documented the new OAuth implementation here.
Transition Timeline
On October 1st, 2014, we will roll out an initial, non-breaking change. The OAuth /token endpoint will begin to return new parameters in addition to access_token, which is the only parameter it returns today.
On March 2nd, 2015 at 11:00AM EST, newly generated access tokens will have a lifetime of 1 hour, and any existing access tokens will begin to expire.
Any access tokens that are generated between October 1st, 2014 and March 2nd, 2015 will have a special lifetime, in which they will not expire until March 2nd, 2015. This means that any existing applications can continue to operate as they do today without any consequence until March.
Is my application affected by this change?
If you’re only using the Off-Site Gateway, this change will not affect your integration.
Otherwise, if your application uses any of the OAuth endpoints, this is a major breaking change.
There are two common flows behind the usage of our API, which are impacted by this change:
- Hardcoded access tokens. Some applications hardcode a single access token and use it to send money from a particular Dwolla account, send money requests, lookup transactions for their account, and so on.
- User authorization. Most applications implement OAuth to allow users to grant the application permission to act on their behalf. Typically, the resulting access tokens are stored for future actions, and applications are designed with the expectation that the access token will remain valid indefinitely.
What do I need to do for this change?
Chances are, your existing application has been built with the expectation that access tokens are valid forever. Despite the fact that access tokens will only last 1 hour, your application can continue to maintain authorization indefinitely by periodically refreshing the access token.
Learn how to use the new refresh token with this guide.
We’ve also updated our official API libraries to include new a method to let you easily refresh an access token. Our new dwolla-node library supports refresh out of the box. The dwolla-ruby, dwolla-php, and dwolla-python libraries have been updated, but the changes currently live on the oauth-refresh branch on GitHub. They’ll merged into master and officially updated on October 1st, 2014.
Sandbox Testing
The new OAuth implementation is already available in the sandbox environment (UAT) so you can start testing and developing against it.
As a major breaking change, we understand the work needed to adjust to it is not trivial. If you have any questions or need any help, please don’t hesitate to reach out to us! 
.