Rate this page:

Twilio Connect Java Quickstart


Twilio Connect is an easy way for developers to obtain authorization to make calls, send text messages, purchase phone numbers, read access logs and perform other API functions on behalf of another Twilio account holder.

As an example, imagine you want to access the Twilio account of a user of your web application to provide in-depth analytics of their Twilio account activity. In this quickstart we'll solve this problem by creating your first Twilio Connect App, placing the "Connect" button on your web site so users can authorize your app to access their Twilio account data and make API requests against their account.

Creating Your First Twilio Connect App

Let's jump right in and create our first Connect app. Log in to your Twilio account dashboard, select "Apps" and click the "Create Connect App" button. Fill in the top section with the name of your application and your company information.

Next, assign an Authorize URL to your Connect application. The Authorize URL is the URL that Twilio will redirect the user's browser to after they have authorized your application to access their Twilio account. Later on in the quickstart we'll demonstrate how the Authorize URL is used.

Lastly, select the access rights your Connect app requires on the user's account. For this example we will access call logs for analytics, so we'll choose "Read all account data".

Here's what our sample Connect application looks like:

Rossum Twilio Connect App

Click 'Save Changes' and you're done!

Placing the Connect Button on Your Web Site

Twilio Connect

The Connect button is where your customers will start the process of authorizing your Connect App to access their Twilio account. You can generate the code needed to place this button on your web site with the Twilio Connect button HTML generator.

After saving your application you will see a popup with HTML code. Copy the generated code and paste it into the HTML of your web site where you would like the button to appear. If you ever need to generate this HTML again, click on the "Generate Connect Button HTML" link at the bottom of your Connect App Details page.

Testing the Authorization Workflow

With the Twilio Connect button now on your web site, browse to the page where you placed the HTML and click the Connect button. Verify that the information displayed on the authorization screen is correct.

After completing the app authorization process, you are redirected to the Authorize URL you specified when creating your Connect App. Appended to that URL is an Account Sid URL parameter with a value that looks like this:
   Your Connect App's Authorize URL       Customer's SID

Your application should extract the AccountSid value from the URL and associate it with the user's account within your application. After extracting the AccountSid, we recommend that you redirect the user to another page within your app so the AccountSid isn't hanging around. Let's show an example using Java.

This tutorial assumes you have a Java development environment with a Web server capable of running Java servlets and the twilio-java helper library. Please see our post on setting up your environment if you need help installing those programs.

package com.twilio;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.twilio.sdk.verbs.TwiMLResponse;
import com.twilio.sdk.verbs.TwiMLException;
import com.twilio.sdk.verbs.Sms;

public class TwilioServlet extends HttpServlet {

    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // Retrieve the Connect user's Account Sid
        String accountSid = request.getParameter("AccountSid");

        // Store this account sid in your database, so you can retrieve it
        // later. You will need to write this section of the code.

        // Finally, redirect the user to your app after you've gathered their
        // SID

Making an Authorized Request

With the user's Account Sid in hand you can now request data from their account via the Twilio REST API. A request to retrieve data from a user's account is nearly identical to a request made against your own account, with one key difference. Instead of authenticating with your own AccountSid, you authenticate with the Account Sid retrieved during the authorization process and your account's Auth Token.

Here is a simple request to retrieve call logs from an account using the Java helper library. Pay special attention to line 4 where the customer's Account Sid is specified instead of your own:

import java.util.Map;
import java.util.HashMap;

import com.twilio.sdk.TwilioRestClient;
import com.twilio.sdk.TwilioRestException;
import com.twilio.sdk.resource.instance.Account;
import com.twilio.sdk.resource.instance.Call;
import com.twilio.sdk.resource.list.CallList;

public class CallRetriever {

    // The customer's Account Sid
    public static final String ACCOUNT_SID = "AC123";

    // Your own Auth Token
    public static final String AUTH_TOKEN = "456bef";

    public static void main(String[] args) throws TwilioRestException {

        TwilioRestClient client = new TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN);
        Account mainAccount = client.getAccount();
        CallList calls = mainAccount.getCalls();
        for (Call call : calls) {
            System.out.println("From: " + call.getFrom() + " To: " + call.getTo());

You're Done! Now What?

Retrieving call logs on behalf of your customers is just the start of what you can accomplish with Twilio Connect. Visit the complete Connect documentation and best practices to learn more about how to integrate Connect's additional capabilities into your applications.

Rate this page:

Need some help?

We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd by visiting Twilio's Stack Overflow Collective or browsing the Twilio tag on Stack Overflow.

Loading Code Sample...

        Thank you for your feedback!

        Please select the reason(s) for your feedback. The additional information you provide helps us improve our documentation:

        Sending your feedback...
        🎉 Thank you for your feedback!
        Something went wrong. Please try again.

        Thanks for your feedback!