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

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
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
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 

Recently uploaded (20)

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
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
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 

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.