Slide 1

Slide 1 text

Social&Mobile Ian Barber What we I learned from Google+ Google+ Developer Advocate Friday, 15 March 13

Slide 2

Slide 2 text

Friday, 15 March 13

Slide 3

Slide 3 text

Many Devices Many Apps Single Identity Friday, 15 March 13

Slide 4

Slide 4 text

Many Devices Friday, 15 March 13

Slide 5

Slide 5 text

Consistency Matters Friday, 15 March 13

Slide 6

Slide 6 text

Context Matters Friday, 15 March 13

Slide 7

Slide 7 text

Context Matters Friday, 15 March 13

Slide 8

Slide 8 text

Context Matters Friday, 15 March 13

Slide 9

Slide 9 text

Google+ Sign-In Friday, 15 March 13

Slide 10

Slide 10 text

Applications Not Devices Friday, 15 March 13

Slide 11

Slide 11 text

Friday, 15 March 13

Slide 12

Slide 12 text

Many Apps Friday, 15 March 13

Slide 13

Slide 13 text

Social Applications Friday, 15 March 13

Slide 14

Slide 14 text

Social Applications Friday, 15 March 13

Slide 15

Slide 15 text

builder = new PlusShare.Builder(this, mPC); builder.setMessage("Create a Google+ Page"); builder.setContentUrl( Uri.parse("https://eg.com/pages/")); builder.setContentDeepLinkId("/pages/", null, null, null); builder.addCallToAction("CREATE_ITEM", Uri.parse("http://eg.com/pages/create"), "/pages/create"); startActivityForResult(builder.build(), 0); Android Friday, 15 March 13

Slide 16

Slide 16 text

builder = [[GPPShare sharedInstance] shareDialog]; [builder setPrefillText:@"Create a Page!"]; [builder setURLToShare:[NSURL URLWithString:@"http://eg.com/pages"]]; [builder setContentDeepLinkID:@"/pages/"]; [builder setCallToActionButtonWithLabel: @"CREATE_ITEM" URL:@"http://eg.com/pages/create" deepLinkID:@"/pages/create"]; [builder open]; iOS Friday, 15 March 13

Slide 17

Slide 17 text

Single Identity Friday, 15 March 13

Slide 18

Slide 18 text

Single Identity Friday, 15 March 13

Slide 19

Slide 19 text

Single Identity Friday, 15 March 13

Slide 20

Slide 20 text

Google+ Sign-In Friday, 15 March 13

Slide 21

Slide 21 text

mPlusClient = new PlusClient.Builder( this.getApplicationContext(), this, this) .setScopes(PLUS_LOGIN) .setVisibleActivities( "http://schemas.google.com/AddActivity") .build(); Android Friday, 15 March 13

Slide 22

Slide 22 text

Consent onConnection Failed onActivity Result onStart onConnected Account Chooser connect startResolution forResult connect connect connect Friday, 15 March 13

Slide 23

Slide 23 text

GPPSignIn *signIn = [GPPSignIn sharedInstance]; signIn.clientID = @"CLIENT_ID_GOES_HERE"; signIn.scopes = [NSArray arrayWithObjects: kGTLAuthScopePlusLogin, nil]; signIn.actions = [NSArray arrayWithObjects: @"http://schemas.google.com/AddActivity", nil]; signIn.delegate = self; iOS Friday, 15 March 13

Slide 24

Slide 24 text

Google+ / Chrome / Safari GPPSignIn authenticate trySilent Authentication finishedWith Auth:error GPPURLHandler Friday, 15 March 13

Slide 25

Slide 25 text

Types of Identity Friday, 15 March 13

Slide 26

Slide 26 text

Performed Identity Friday, 15 March 13

Slide 27

Slide 27 text

Moment moment = new Moment.Builder() .setType("http://schemas.google.com" + "/ReviewActivity"); .setTarget(target) .setResult(result) .build(); if (mPlusClient.isConnected()) { mPlusClient.writeMoment(moment); } Android Friday, 15 March 13

Slide 28

Slide 28 text

GTLPlusMoment *moment = [[[GTLPlusMoment alloc] init]]; moment.type = @"http://schemas.google.com" @"/ReviewActivity"; moment.target = target; moment.result = result; GTLQueryPlus *query = [GTLQueryPlus queryForMomentsInsertWithObject:moment userId:@"me" collection:kGTLPlusCollectionVault]; iOS Friday, 15 March 13

Slide 29

Slide 29 text

Social Identity Friday, 15 March 13

Slide 30

Slide 30 text

public void onConnected() { // ... mPlusClient.loadPerson(this, "me"); } public void onPersonLoaded( ConnectionResult status, Person person) { if (status.getErrorCode() == ConnectionResult.SUCCESS) { Log.d(TAG, "Display Name: " + person.getDisplayName()); } } Android Friday, 15 March 13

Slide 31

Slide 31 text

GTLQueryPlus *query = [GTLQueryPlus queryForPeopleListWithUserId:@"me" collection:kGTLPlusCollectionVisible]; [plusService executeQuery:query completionHandler:^(id ticket, GTLPlusPeopleFeed *peopleFeed, NSError *error) { if (!error) { NSArray* people= [peopleFeed.items]; } }]; iOS Friday, 15 March 13

Slide 32

Slide 32 text

Single Identity Friday, 15 March 13

Slide 33

Slide 33 text

Many Devices Many Apps Single Identity Friday, 15 March 13

Slide 34

Slide 34 text

Friday, 15 March 13

Slide 35

Slide 35 text

[email protected] http://profiles.google.com/ianbarber http://twitter.com/ianbarber http://developers.google.com/+ http://github.com/googleplus Thank You Friday, 15 March 13