Secure with software and not key fobs

How it works
Step 1:  
Generate a one-time code that meets your security requirements. Your app makes an HTTP request to Twilio.
Twilio receives the request and delivers a text message or phone call with the specified passcode.
User receives passcode through SMS or phone call.
User inputs passcode into the 2FA workflow. If there's been no authentication within the defined time period, your app can choose to expire the code and deliver a new security code via SMS or text-to-speech.

Building blocks

Why Twilio
Twilio 101

How to

$client = new Services_Twilio($accountsid, $authtoken);
// Prepare the message with the password embedded
$content = "Your passcode is ".$passcode
$method = ($method == "sms") ? "sms_messages" : "calls";

// Send the message via SMS or Voice
$item = $client->account->$method->create(
    $fromNumber, // The Twilio number we're sending from
    $phoneNum, // The user's phone number

We can't wait to see what you build