SlideShare a Scribd company logo
1 of 65
Download to read offline
#APIsBerlin
Build the best apps
REINVENTING IDENTITY AND
SOCIAL GRAPHS WITH DIGITS
#APIsBerlin — April 24, 2015
ROMAIN HUET
Sr. Developer Advocate
@romainhuet
crashes spam identity dropped frames lag
performance threading memory leaks churn 

getting downloads driving installs revenue 

in-app-purchases revenue monetization user feedback
validation distribution support user accounts
testing graphics icons deep links localization
internationalization data storage persistence analytics
content interest graphs stability
crashes spam identity dropped frames lag
performance threading memory leaks churn 

getting downloads driving installs revenue 

in-app-purchases revenue monetization user feedback
validation distribution support user accounts
testing graphics icons deep links localization
internationalization data storage persistence analytics
content interest graphs stability
IDENTITY
STABILITY
DISTRIBUTION
REVENUE
Individuals Using the Internet, 2005-2014 (ITU)People(Millions)
0
750
1500
2250
3000
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
Internet Users
150M
150M
190M
630M
US
EUROPE
ASIA
LATAM
120M
MENA
940M
Sign in with
@romainhuetRomain Huet
Twitter, Inc.
Sr. Developer Advocate
romain@twitter.com
+49 173 0001337+49 173 0001337
@romainhuetRomain Huet
Twitter, Inc.
Sr. Developer Advocate
romain@twitter.com
+49 173 0001337
+49 173 0001337
SMS API SMS Aggregator
$
SMS API SMS Aggregator
SMS API SMS Aggregator
¥$
SMS API
SMS API
SMS API SMS Aggregator
SMS API SMS Aggregator
¥$
£
¥$
€£
SMS API SMS Aggregator
SMS API SMS Aggregator
SMS API SMS Aggregator
COST PER MILLION VERIFICATIONS
Brazil $50,000
United Kingdom $33,000
Germany $60,000
Saudi Arabia $20,000
United States $5,000
POWERED BY
INITIALIZE FABRIC
import Fabric
import TwitterKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(application: UIApplication!,
didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
}
}
Fabric.with([Twitter()])
return true
INVOKE DIGITS
import TwitterKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
let authenticateButton = DGTAuthenticateButton(authenticationCompletion: {
(session: DGTSession!, error: NSError!) in
// Store the Digits session in your backend.
})
authenticateButton.center = self.view.center
self.view.addSubview(authenticateButton)
DIGITS SESSION
let button = DGTAuthenticateButton { (session, error) in
if session != nil {
}
}
println(session.userID)
// “2834242790”
println(session.authToken)
// “2834242790-5gsoS8ABHybf7SfsWgPXhqmDet843uleJM8hsVa”
println(session.authTokenSecret)
// “xLDdKyEc1SQDrtyobMWZ14dbnL224e4PKxAeGPu4Ibzew”
println(session.phoneNumber)
// “+491730001337”
EXTEND YOUR PROFILES
digitsUserID name profilePic
29384805 … …
23028702 … …
29484500 … …
29390084 … …
USE YOUR OWN BUTTON
import TwitterKit
class ViewController: UIViewController {
@IBAction func didTapButton(sender: AnyObject) {
}
}
Digits.sharedInstance().authenticateWithCompletion { (session, error) in
// Inspect the Digits session/error objects.
}
THEME YOUR DIGITS EXPERIENCE
import TwitterKit
class ViewController: UIViewController {
@IBAction func didTapButton(sender: AnyObject) {
}
}
let digitsAppearance = DGTAppearance()
digitsAppearance.backgroundColor = UIColor.blackColor()
digitsAppearance.accentColor = UIColor.greenColor()
Digits.sharedInstance().authenticateWithDigitsAppearance(digitsAppearance,
viewController: nil, title: nil) { (session, error) in
// Inspect the Digits session/error objects.
}
DEMO
#APIsBerlin
ADD DIGITS TO YOUR WEB APP
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Cannonball</title>
<meta charset="UTF-8">
</head>
<body>
<button id="digits-btn">Sign In with Phone</button>
<script id="digits-sdk" src="https://cdn.digits.com/1/sdk.js" async></script>
</body>
</html>
ADD DIGITS TO YOUR WEB APP
<script>
document.getElementById('digits-sdk').onload = function() {
};
</script>
// Set a click event listener on the button.
document.getElementById('digits-btn').addEventListener("click", onLoginButtonClick);
// Implement the login button callback and handle the response.
function onLoginButtonClick() {
Digits.logIn().done(onLogin).fail(onLoginFailure);
}
// Initialize Digits and check if the user is already logged into Digits.
Digits.init({ consumerKey: "o0gzicSS27GgtEJsu7wT442SG" }).done(function() {
Digits.getLoginStatus().done(onLoginStatus);
});
VERIFY A DIGITS TOKEN & RETRIEVE USER INFO
// Parse the OAuth Echo headers.
var oAuthEchoHeaders = loginResponse.oauth_echo_headers;
var verifyData = {
credentials: oAuthEchoHeaders['X-Verify-Credentials-Authorization'],
apiUrl: oAuthEchoHeaders['X-Auth-Service-Provider']
};
// Post this data and from your server, securely request over SSL

// the user information including the phone number.
$.post('/verify', verifyData).done(function() {
// Update the user interface with user information.
});
<script>
// Validate the authentication and sign the user in.
function onLogin(loginResponse) {
}
</script>
216countries
28languages
216 28
freefree
POWERED BY
WHAT’S NEW?
1530531-0k4UA
v5fyP1zVNFvtT
LGSzjnVHuCKc
K3xEZ0MNKX8i
FIND FRIENDS
// Initialize the Find Friends button from the view.
findFriendsButton = (Button) findViewById(R.id.find_your_friends_button);
// Set a listener on the Find Friends button.
findFriendsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Start uploading the Address Book.
Digits.getInstance().getContactsClient().startContactsUpload();
}
});
FIND FRIENDS
// Retrieve the contact matches.
Digits.getInstance().getContactsClient().lookupContactMatches(null, null,
new ContactsCallback<Contacts>() {
});
@Override
public void success(Result<Contacts> result) {
if (result.data.users != null) {
// Process contacts data.
}
}
@Override
public void failure(TwitterException exception) {
// Show error.
}
WHAT’S NEW?
As we continue to grow internationally, Digits
is extremely helpful. Many of our customers
prefer to verify their accounts via phone, so
Digits is the easiest solution for them and us.”
“
- Sean Smith,

Senior Director, Client Engineering, Rdio
Grow Faster
Thank You

More Related Content

Similar to Reinventing Identity and Social Graphs with Digits

Appcelerator iPhone/iPad Dev Con 2010 San Diego, CA
Appcelerator iPhone/iPad Dev Con 2010 San Diego, CAAppcelerator iPhone/iPad Dev Con 2010 San Diego, CA
Appcelerator iPhone/iPad Dev Con 2010 San Diego, CAJeff Haynie
 
Mountain View July JavaScript Meetup at Google
Mountain View July JavaScript Meetup at GoogleMountain View July JavaScript Meetup at Google
Mountain View July JavaScript Meetup at GoogleJeff Haynie
 
Bootstrapping an App for Launch
Bootstrapping an App for LaunchBootstrapping an App for Launch
Bootstrapping an App for LaunchCraig Phares
 
Accessiblity 101 and JavaScript Frameworks
Accessiblity 101 and JavaScript Frameworks Accessiblity 101 and JavaScript Frameworks
Accessiblity 101 and JavaScript Frameworks Aimee Maree Forsstrom
 
HackPR at UPR in Mayaguez - September 2015
HackPR at UPR in Mayaguez - September 2015HackPR at UPR in Mayaguez - September 2015
HackPR at UPR in Mayaguez - September 2015Jonathan Bulava
 
Creating Datadipity
Creating DatadipityCreating Datadipity
Creating DatadipityClickslide
 
Benvenuti nella “API Economy”
Benvenuti nella “API Economy”Benvenuti nella “API Economy”
Benvenuti nella “API Economy”Codemotion
 
You Had Me at Hello: How Ulta Beauty Guests Benefit From Real-time Capabilities
You Had Me at Hello: How Ulta Beauty Guests Benefit From Real-time CapabilitiesYou Had Me at Hello: How Ulta Beauty Guests Benefit From Real-time Capabilities
You Had Me at Hello: How Ulta Beauty Guests Benefit From Real-time CapabilitiesTIBCO Software
 
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Innomatic Platform
 
Solving Enteprise Mobility Considerations with Telerik Mobile Platform
Solving Enteprise Mobility Considerations with Telerik Mobile PlatformSolving Enteprise Mobility Considerations with Telerik Mobile Platform
Solving Enteprise Mobility Considerations with Telerik Mobile PlatformLohith Goudagere Nagaraj
 
Services, Apps and the API Powered Web
Services, Apps and the API Powered WebServices, Apps and the API Powered Web
Services, Apps and the API Powered WebSteven Willmott
 
Marketing in an API Environment Part 1 of 2
Marketing in an API Environment Part 1 of 2Marketing in an API Environment Part 1 of 2
Marketing in an API Environment Part 1 of 2Lori Fisher
 
An api is not "yet another feature"
An api is not "yet another feature"An api is not "yet another feature"
An api is not "yet another feature"Shay Weiner
 
Write once, ship multiple times
Write once, ship multiple timesWrite once, ship multiple times
Write once, ship multiple timesŽeljko Plesac
 
Using API platform to build ticketing system (translations, time zones, ...) ...
Using API platform to build ticketing system (translations, time zones, ...) ...Using API platform to build ticketing system (translations, time zones, ...) ...
Using API platform to build ticketing system (translations, time zones, ...) ...Antonio Peric-Mazar
 
AI and Machine Learning for Testers
AI and Machine Learning for TestersAI and Machine Learning for Testers
AI and Machine Learning for TestersTechWell
 
2016-Mar-03 Leppitsch in Auckland meetup
2016-Mar-03 Leppitsch in Auckland meetup2016-Mar-03 Leppitsch in Auckland meetup
2016-Mar-03 Leppitsch in Auckland meetupMichael Leppitsch
 
Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify
Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS AmplifyTake Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify
Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS AmplifyAmazon Web Services
 
Progetta, crea e gestisci Modern Application per web e mobile su AWS
Progetta, crea e gestisci Modern Application per web e mobile su AWSProgetta, crea e gestisci Modern Application per web e mobile su AWS
Progetta, crea e gestisci Modern Application per web e mobile su AWSAmazon Web Services
 

Similar to Reinventing Identity and Social Graphs with Digits (20)

Appcelerator iPhone/iPad Dev Con 2010 San Diego, CA
Appcelerator iPhone/iPad Dev Con 2010 San Diego, CAAppcelerator iPhone/iPad Dev Con 2010 San Diego, CA
Appcelerator iPhone/iPad Dev Con 2010 San Diego, CA
 
Mountain View July JavaScript Meetup at Google
Mountain View July JavaScript Meetup at GoogleMountain View July JavaScript Meetup at Google
Mountain View July JavaScript Meetup at Google
 
Bootstrapping an App for Launch
Bootstrapping an App for LaunchBootstrapping an App for Launch
Bootstrapping an App for Launch
 
Accessiblity 101 and JavaScript Frameworks
Accessiblity 101 and JavaScript Frameworks Accessiblity 101 and JavaScript Frameworks
Accessiblity 101 and JavaScript Frameworks
 
HackPR at UPR in Mayaguez - September 2015
HackPR at UPR in Mayaguez - September 2015HackPR at UPR in Mayaguez - September 2015
HackPR at UPR in Mayaguez - September 2015
 
Creating Datadipity
Creating DatadipityCreating Datadipity
Creating Datadipity
 
Benvenuti nella “API Economy”
Benvenuti nella “API Economy”Benvenuti nella “API Economy”
Benvenuti nella “API Economy”
 
You Had Me at Hello: How Ulta Beauty Guests Benefit From Real-time Capabilities
You Had Me at Hello: How Ulta Beauty Guests Benefit From Real-time CapabilitiesYou Had Me at Hello: How Ulta Beauty Guests Benefit From Real-time Capabilities
You Had Me at Hello: How Ulta Beauty Guests Benefit From Real-time Capabilities
 
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
 
Solving Enteprise Mobility Considerations with Telerik Mobile Platform
Solving Enteprise Mobility Considerations with Telerik Mobile PlatformSolving Enteprise Mobility Considerations with Telerik Mobile Platform
Solving Enteprise Mobility Considerations with Telerik Mobile Platform
 
Services, Apps and the API Powered Web
Services, Apps and the API Powered WebServices, Apps and the API Powered Web
Services, Apps and the API Powered Web
 
Marketing in an API Environment Part 1 of 2
Marketing in an API Environment Part 1 of 2Marketing in an API Environment Part 1 of 2
Marketing in an API Environment Part 1 of 2
 
An api is not "yet another feature"
An api is not "yet another feature"An api is not "yet another feature"
An api is not "yet another feature"
 
Write once, ship multiple times
Write once, ship multiple timesWrite once, ship multiple times
Write once, ship multiple times
 
Force Platform
Force PlatformForce Platform
Force Platform
 
Using API platform to build ticketing system (translations, time zones, ...) ...
Using API platform to build ticketing system (translations, time zones, ...) ...Using API platform to build ticketing system (translations, time zones, ...) ...
Using API platform to build ticketing system (translations, time zones, ...) ...
 
AI and Machine Learning for Testers
AI and Machine Learning for TestersAI and Machine Learning for Testers
AI and Machine Learning for Testers
 
2016-Mar-03 Leppitsch in Auckland meetup
2016-Mar-03 Leppitsch in Auckland meetup2016-Mar-03 Leppitsch in Auckland meetup
2016-Mar-03 Leppitsch in Auckland meetup
 
Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify
Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS AmplifyTake Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify
Take Mobile and Web Apps to the Next Level with AWS AppSync and AWS Amplify
 
Progetta, crea e gestisci Modern Application per web e mobile su AWS
Progetta, crea e gestisci Modern Application per web e mobile su AWSProgetta, crea e gestisci Modern Application per web e mobile su AWS
Progetta, crea e gestisci Modern Application per web e mobile su AWS
 

More from Romain Huet

#TwitterFlight: Connecting to the Pulse of the Planet
#TwitterFlight: Connecting to the Pulse of the Planet#TwitterFlight: Connecting to the Pulse of the Planet
#TwitterFlight: Connecting to the Pulse of the PlanetRomain Huet
 
Combining Signals with Context in the Internet of Things
Combining Signals with Context in the Internet of ThingsCombining Signals with Context in the Internet of Things
Combining Signals with Context in the Internet of ThingsRomain Huet
 
Twitter APIs: Se Connecter au Pouls de la Planète
Twitter APIs: Se Connecter au Pouls de la PlanèteTwitter APIs: Se Connecter au Pouls de la Planète
Twitter APIs: Se Connecter au Pouls de la PlanèteRomain Huet
 
Living in the Mobile Future
Living in the Mobile FutureLiving in the Mobile Future
Living in the Mobile FutureRomain Huet
 
Twitter APIs: Connecting to the Pulse of the Planet
Twitter APIs: Connecting to the Pulse of the PlanetTwitter APIs: Connecting to the Pulse of the Planet
Twitter APIs: Connecting to the Pulse of the PlanetRomain Huet
 
JavaScript, Node, and Drones: The Story of NodeCopter
JavaScript, Node, and Drones: The Story of NodeCopterJavaScript, Node, and Drones: The Story of NodeCopter
JavaScript, Node, and Drones: The Story of NodeCopterRomain Huet
 
Building a Desktop for the Cloud
Building a Desktop for the CloudBuilding a Desktop for the Cloud
Building a Desktop for the CloudRomain Huet
 

More from Romain Huet (7)

#TwitterFlight: Connecting to the Pulse of the Planet
#TwitterFlight: Connecting to the Pulse of the Planet#TwitterFlight: Connecting to the Pulse of the Planet
#TwitterFlight: Connecting to the Pulse of the Planet
 
Combining Signals with Context in the Internet of Things
Combining Signals with Context in the Internet of ThingsCombining Signals with Context in the Internet of Things
Combining Signals with Context in the Internet of Things
 
Twitter APIs: Se Connecter au Pouls de la Planète
Twitter APIs: Se Connecter au Pouls de la PlanèteTwitter APIs: Se Connecter au Pouls de la Planète
Twitter APIs: Se Connecter au Pouls de la Planète
 
Living in the Mobile Future
Living in the Mobile FutureLiving in the Mobile Future
Living in the Mobile Future
 
Twitter APIs: Connecting to the Pulse of the Planet
Twitter APIs: Connecting to the Pulse of the PlanetTwitter APIs: Connecting to the Pulse of the Planet
Twitter APIs: Connecting to the Pulse of the Planet
 
JavaScript, Node, and Drones: The Story of NodeCopter
JavaScript, Node, and Drones: The Story of NodeCopterJavaScript, Node, and Drones: The Story of NodeCopter
JavaScript, Node, and Drones: The Story of NodeCopter
 
Building a Desktop for the Cloud
Building a Desktop for the CloudBuilding a Desktop for the Cloud
Building a Desktop for the Cloud
 

Recently uploaded

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 

Recently uploaded (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

Reinventing Identity and Social Graphs with Digits

  • 2. REINVENTING IDENTITY AND SOCIAL GRAPHS WITH DIGITS #APIsBerlin — April 24, 2015
  • 3. ROMAIN HUET Sr. Developer Advocate @romainhuet
  • 4. crashes spam identity dropped frames lag performance threading memory leaks churn 
 getting downloads driving installs revenue 
 in-app-purchases revenue monetization user feedback validation distribution support user accounts testing graphics icons deep links localization internationalization data storage persistence analytics content interest graphs stability
  • 5. crashes spam identity dropped frames lag performance threading memory leaks churn 
 getting downloads driving installs revenue 
 in-app-purchases revenue monetization user feedback validation distribution support user accounts testing graphics icons deep links localization internationalization data storage persistence analytics content interest graphs stability
  • 6.
  • 7.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16. Individuals Using the Internet, 2005-2014 (ITU)People(Millions) 0 750 1500 2250 3000 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 Internet Users
  • 19. @romainhuetRomain Huet Twitter, Inc. Sr. Developer Advocate romain@twitter.com +49 173 0001337+49 173 0001337
  • 20. @romainhuetRomain Huet Twitter, Inc. Sr. Developer Advocate romain@twitter.com +49 173 0001337 +49 173 0001337
  • 21.
  • 22.
  • 23.
  • 24. SMS API SMS Aggregator $
  • 25. SMS API SMS Aggregator SMS API SMS Aggregator ¥$
  • 27. SMS API SMS Aggregator SMS API SMS Aggregator ¥$ £
  • 28. ¥$ €£ SMS API SMS Aggregator SMS API SMS Aggregator SMS API SMS Aggregator
  • 29. COST PER MILLION VERIFICATIONS Brazil $50,000 United Kingdom $33,000 Germany $60,000 Saudi Arabia $20,000 United States $5,000
  • 30.
  • 32.
  • 33.
  • 34.
  • 35. INITIALIZE FABRIC import Fabric import TwitterKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool { } } Fabric.with([Twitter()]) return true
  • 36. INVOKE DIGITS import TwitterKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } } let authenticateButton = DGTAuthenticateButton(authenticationCompletion: { (session: DGTSession!, error: NSError!) in // Store the Digits session in your backend. }) authenticateButton.center = self.view.center self.view.addSubview(authenticateButton)
  • 37. DIGITS SESSION let button = DGTAuthenticateButton { (session, error) in if session != nil { } } println(session.userID) // “2834242790” println(session.authToken) // “2834242790-5gsoS8ABHybf7SfsWgPXhqmDet843uleJM8hsVa” println(session.authTokenSecret) // “xLDdKyEc1SQDrtyobMWZ14dbnL224e4PKxAeGPu4Ibzew” println(session.phoneNumber) // “+491730001337”
  • 38. EXTEND YOUR PROFILES digitsUserID name profilePic 29384805 … … 23028702 … … 29484500 … … 29390084 … …
  • 39.
  • 40. USE YOUR OWN BUTTON import TwitterKit class ViewController: UIViewController { @IBAction func didTapButton(sender: AnyObject) { } } Digits.sharedInstance().authenticateWithCompletion { (session, error) in // Inspect the Digits session/error objects. }
  • 41. THEME YOUR DIGITS EXPERIENCE import TwitterKit class ViewController: UIViewController { @IBAction func didTapButton(sender: AnyObject) { } } let digitsAppearance = DGTAppearance() digitsAppearance.backgroundColor = UIColor.blackColor() digitsAppearance.accentColor = UIColor.greenColor() Digits.sharedInstance().authenticateWithDigitsAppearance(digitsAppearance, viewController: nil, title: nil) { (session, error) in // Inspect the Digits session/error objects. }
  • 42.
  • 43.
  • 45. ADD DIGITS TO YOUR WEB APP <!DOCTYPE html> <html> <head> <title>Welcome to Cannonball</title> <meta charset="UTF-8"> </head> <body> <button id="digits-btn">Sign In with Phone</button> <script id="digits-sdk" src="https://cdn.digits.com/1/sdk.js" async></script> </body> </html>
  • 46. ADD DIGITS TO YOUR WEB APP <script> document.getElementById('digits-sdk').onload = function() { }; </script> // Set a click event listener on the button. document.getElementById('digits-btn').addEventListener("click", onLoginButtonClick); // Implement the login button callback and handle the response. function onLoginButtonClick() { Digits.logIn().done(onLogin).fail(onLoginFailure); } // Initialize Digits and check if the user is already logged into Digits. Digits.init({ consumerKey: "o0gzicSS27GgtEJsu7wT442SG" }).done(function() { Digits.getLoginStatus().done(onLoginStatus); });
  • 47. VERIFY A DIGITS TOKEN & RETRIEVE USER INFO // Parse the OAuth Echo headers. var oAuthEchoHeaders = loginResponse.oauth_echo_headers; var verifyData = { credentials: oAuthEchoHeaders['X-Verify-Credentials-Authorization'], apiUrl: oAuthEchoHeaders['X-Auth-Service-Provider'] }; // Post this data and from your server, securely request over SSL
 // the user information including the phone number. $.post('/verify', verifyData).done(function() { // Update the user interface with user information. }); <script> // Validate the authentication and sign the user in. function onLogin(loginResponse) { } </script>
  • 52.
  • 53.
  • 55.
  • 56.
  • 57.
  • 58. FIND FRIENDS // Initialize the Find Friends button from the view. findFriendsButton = (Button) findViewById(R.id.find_your_friends_button); // Set a listener on the Find Friends button. findFriendsButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Start uploading the Address Book. Digits.getInstance().getContactsClient().startContactsUpload(); } });
  • 59. FIND FRIENDS // Retrieve the contact matches. Digits.getInstance().getContactsClient().lookupContactMatches(null, null, new ContactsCallback<Contacts>() { }); @Override public void success(Result<Contacts> result) { if (result.data.users != null) { // Process contacts data. } } @Override public void failure(TwitterException exception) { // Show error. }
  • 61. As we continue to grow internationally, Digits is extremely helpful. Many of our customers prefer to verify their accounts via phone, so Digits is the easiest solution for them and us.” “ - Sean Smith,
 Senior Director, Client Engineering, Rdio
  • 62.
  • 64.