SlideShare a Scribd company logo
1 of 22
Google+ Sign-in for Mobile
and Web
By +Lakhdar Meftah
Simple, secure
authentication
Interactive
posts
Over-the-air
installs
Integrated
Hangouts
Profile & social
graph access
Lasting re-
engagement
Engagement
analytics
Google+
plugins
Google+ Sign-In
Simple, secure authentication
Build on a
trusted
relationship
Works with
your existing
sign-in systems
Cross-platform single sign on
Avoid the hassle of
creating your own
authentication system
Learn more about
your users and
their friend
Give users
more choice
Interactive Posts
Stand out in the stream
Drive action
Customize the post
Measure impact
Interactive post flow
Pull people into your app to
take specific actions
Over-The-Air Installs
Stay connected to users across their devices
Drive automatic
Android downloads
from your website
sign-ins
One-step download
to a user's device
Measure your
downloads
Google+ Hangouts:
Some things are better face to face
App Customization
Customize content and suggest connections for your users
Improve engagement through
users' connections
Create accurate
profiles
Connect
friends
Spark content
discovery
Create dynamic
marketing campaigns
App Activities
Increase app discovery and drive lasting re-engagement
Build conversations
and share activities
that matter
App activities in
Google Search
Be found on user's
Google+ profile
Google+ Platform Insights
Meaningful analytics to optimize your integration
Get the most out of
Google+ Sign-In
Understand your
users
Dig deeper into post
performance
Optimize your
integration based on
user activity
Monitor installs to
your Android app
Plugins
Grow your audience through identity, relationships, and sharing.
+1 button
Badge
Recommendations
Share
Follow button
Snippest
In Depth
1. Enable the Google+ API
2. Configure your Eclipse project
3. Run the Google+ sample app
4. Initialize the PlusClient
1. Create a Google APIs Console project .
1.Add the Google+ Sign-In button to your app
2.Sign out the user
3.Revoking access tokens and disconnecting the app
4.Customizing your sign-in button
5.Localization
6.Server-side access for your app
2. Google+ Sign in for Android
1.Add the SignInButton in your application's layout:
<com.google.android.gms.common.SignInButton
android:id="@+id/sign_in_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
2.Initialize mPlusClient with the requested visible activities in your
Activity.onCreate handler:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPlusClient = new PlusClient.Builder(this, this, this)
.setVisibleActivities("http://schemas.google.com/AddActivity",
"http://schemas.google.com/BuyActivity")
.build();
}
3.In the Android activity, register your button's OnClickListener to sign in the user when
clicked:
findViewById(R.id.sign_in_button).setOnClickListener(this);
Add the Google+ Sign-In button
4.You should start to resolve any connection errors held in mConnectionResult.
public void onClick(View view) {
if (view.getId() == R.id.sign_in_button && !mPlusClient.isConnected()) {
if (mConnectionResult == null) {
mConnectionProgressDialog.show();
} else {
try {
mConnectionResult.startResolutionForResult(this,
REQUEST_CODE_RESOLVE_ERR);
} catch (SendIntentException e) {
// Try connecting again.
mConnectionResult = null;
mPlusClient.connect();
}
}
}
}
5.When the user has successfully signed in, your onConnected handler will be called:
public void onConnected(Bundle connectionHint) {
mConnectionProgressDialog.dismiss();
Toast.makeText(this, "User is connected!", Toast.LENGTH_LONG).show();
}
Sign out the user
You can add a sign out button to your app. Create a button in your app to act as your
sign out button. Attach an onClickListener to the button and configure
the onClickmethod to disconnect the PlusClient:
public void onClick(View view) {
if (view.getId() == R.id.sign_out_button) {
if (mPlusClient.isConnected()) {
mPlusClient.clearDefaultAccount();
mPlusClient.disconnect();
mPlusClient.connect();
}
}
}
This code clears which account is connected to the app. To sign in again, the user
would choose their account again.
Revoking access tokens and disconnecting the
app
The following code shows a simple example of calling
the PlusClient.revokeAccessAndDisconnect method and responding to
the onAccessRevoked event:
// Prior to disconnecting, run clearDefaultAccount().
mPlusClient.clearDefaultAccount();
mPlusClient.revokeAccessAndDisconnect(new OnAccessRevokedListener() {
public void onAccessRevoked(ConnectionResult status) {
// mPlusClient is now disconnected and access has been revoked.
// Trigger app logic to comply with the developer policies
}
});
Customizing your sign-in button
If you require additional customization, you can define a custom button:
1.Review the branding guidelines and download icons and images to use in your
button.
2.Add the button to your application layout.
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="@string/common_signin_button_text_long" />
Localization
The SDK provides localized strings for the SignInButton
To view a full list of languages, you can examine the following directory in the
SDK: <android-sdk-folder>/extras/google/google_play_services/libproject/google-
play-services_lib/res/.
In that location, you will find directories named values-<langcode>.
Server-side access for your app
Bundle appActivities = new Bundle();
appActivities.putString(GoogleAuthUtil.KEY_REQUEST_VISIBLE_ACTIVITIES,
"<app-activity1> <app-activity2>");
String scopes = "oauth2:server:client_id:<server client-id>:api_scope:<scope1> <scope2>";
String code = null;
try {
code = GoogleAuthUtil.getToken(this, // Context context
mPlusClient.getAccountName(), // String accountName
scopes, // String scope
appActivities // Bundle bundle
);
} catch (IOException transientEx) {
// network or server error,
return;
} catch (UserRecoverableAuthException e) {
// Recover
code = null;
} catch (GoogleAuthException authEx) {
// Failure.
return;
} catch (Exception e) {
throw new RuntimeException(e);
}
String accessToken = null;
try {
accessToken = GoogleAuthUtil.getToken(this,
mPlusClient.getAccountName(),
"oauth2:" + TextUtils.join(' ', SCOPES));
} catch (IOException transientEx) {
// network or server error, the call is expected to succeed if you try again later.
// Don't attempt to call again immediately - the request is likely to
// fail, you'll hit quotas or back-off.
...
return;
} catch (UserRecoverableAuthException e) {
// Recover
accessToken = null;
} catch (GoogleAuthException authEx) {
// Failure. The call is not expected to ever succeed so it should not be
// retried.
return;
} catch (Exception e) {
throw new RuntimeException(e);
}
To learn more, see: + Android Authorization methods. + Cross client identity
References
The Google+ Platform
developers.google.com/+/
The Google+ Platform Channel on YouTube
goo.gl/NBnZIz
The Google+ Developers Blog
http://goo.gl/hAcBTO
Thank You
+Me
+GDG Algiers
+GDG Women Algiers

More Related Content

What's hot

Vtiger Google Calendar Sync powers bi way synchronization between VTiger CRM ...
Vtiger Google Calendar Sync powers bi way synchronization between VTiger CRM ...Vtiger Google Calendar Sync powers bi way synchronization between VTiger CRM ...
Vtiger Google Calendar Sync powers bi way synchronization between VTiger CRM ...
Smackcoders, Inc.
 

What's hot (15)

Chapter 11
Chapter 11Chapter 11
Chapter 11
 
Android Marshmallow APIs and Changes
Android Marshmallow APIs and ChangesAndroid Marshmallow APIs and Changes
Android Marshmallow APIs and Changes
 
Vtiger Google Calendar Sync powers bi way synchronization between VTiger CRM ...
Vtiger Google Calendar Sync powers bi way synchronization between VTiger CRM ...Vtiger Google Calendar Sync powers bi way synchronization between VTiger CRM ...
Vtiger Google Calendar Sync powers bi way synchronization between VTiger CRM ...
 
Обзор Android M
Обзор Android MОбзор Android M
Обзор Android M
 
Exam 70-488 Developing Microsoft SharePoint Server 2013 Core Solutions Learni...
Exam 70-488 Developing Microsoft SharePoint Server 2013 Core Solutions Learni...Exam 70-488 Developing Microsoft SharePoint Server 2013 Core Solutions Learni...
Exam 70-488 Developing Microsoft SharePoint Server 2013 Core Solutions Learni...
 
Building mobile apps on AWS
Building mobile apps on AWSBuilding mobile apps on AWS
Building mobile apps on AWS
 
How to use data binding in android
How to use data binding in androidHow to use data binding in android
How to use data binding in android
 
Fraudpointer - Google Apps integration
Fraudpointer  - Google Apps integrationFraudpointer  - Google Apps integration
Fraudpointer - Google Apps integration
 
13 Steps to Safely Deprovision and Delete a Google Apps User
13 Steps to Safely Deprovision and Delete a Google Apps User13 Steps to Safely Deprovision and Delete a Google Apps User
13 Steps to Safely Deprovision and Delete a Google Apps User
 
Building Cloud-powered Mobile Apps
Building Cloud-powered Mobile AppsBuilding Cloud-powered Mobile Apps
Building Cloud-powered Mobile Apps
 
OAuth2 and LinkedIn
OAuth2 and LinkedInOAuth2 and LinkedIn
OAuth2 and LinkedIn
 
Bridging google analytics &amp; tag manager #melbseo meetup
Bridging google analytics &amp; tag manager #melbseo meetupBridging google analytics &amp; tag manager #melbseo meetup
Bridging google analytics &amp; tag manager #melbseo meetup
 
Oauth 2.0
Oauth 2.0Oauth 2.0
Oauth 2.0
 
AWS Webinar - 201 Developing mobile apps with AWS
AWS Webinar - 201 Developing mobile apps with AWSAWS Webinar - 201 Developing mobile apps with AWS
AWS Webinar - 201 Developing mobile apps with AWS
 
Groovymag_May-2012
Groovymag_May-2012Groovymag_May-2012
Groovymag_May-2012
 

Viewers also liked

Viewers also liked (6)

Introduction to Google API
Introduction to Google APIIntroduction to Google API
Introduction to Google API
 
Agile france 2014 - Juste à temps
Agile france 2014 - Juste à tempsAgile france 2014 - Juste à temps
Agile france 2014 - Juste à temps
 
La fonction maintenance
La fonction maintenanceLa fonction maintenance
La fonction maintenance
 
13 rip.fm
13 rip.fm13 rip.fm
13 rip.fm
 
Arduino Algiers MeetUp
Arduino Algiers MeetUpArduino Algiers MeetUp
Arduino Algiers MeetUp
 
Présentation des IoT
Présentation des IoTPrésentation des IoT
Présentation des IoT
 

Similar to Google+ sign in for mobile & web apps

Google external login setup in ASP (1).pdf
Google external login setup in ASP  (1).pdfGoogle external login setup in ASP  (1).pdf
Google external login setup in ASP (1).pdf
findandsolve .com
 
Introduction to the Salesforce Mobile SDK for Android
Introduction to the Salesforce Mobile SDK for AndroidIntroduction to the Salesforce Mobile SDK for Android
Introduction to the Salesforce Mobile SDK for Android
Salesforce Developers
 
Introduction to Visualforce for Mobile Devices
Introduction to Visualforce for Mobile DevicesIntroduction to Visualforce for Mobile Devices
Introduction to Visualforce for Mobile Devices
Salesforce Developers
 

Similar to Google+ sign in for mobile & web apps (20)

Google external login setup in ASP (1).pdf
Google external login setup in ASP  (1).pdfGoogle external login setup in ASP  (1).pdf
Google external login setup in ASP (1).pdf
 
Android chat in the cloud
Android chat in the cloudAndroid chat in the cloud
Android chat in the cloud
 
Mobile 2.0 Open Ideas WorkShop: Building Social Media Enabled Apps on Android
Mobile 2.0 Open Ideas WorkShop: Building Social Media Enabled Apps on AndroidMobile 2.0 Open Ideas WorkShop: Building Social Media Enabled Apps on Android
Mobile 2.0 Open Ideas WorkShop: Building Social Media Enabled Apps on Android
 
Google+ for Mobile Apps on iOS and Android
Google+ for Mobile Apps on iOS and AndroidGoogle+ for Mobile Apps on iOS and Android
Google+ for Mobile Apps on iOS and Android
 
Google Analytics for Developers
Google Analytics for DevelopersGoogle Analytics for Developers
Google Analytics for Developers
 
Introduction to the Salesforce Mobile SDK for Android
Introduction to the Salesforce Mobile SDK for AndroidIntroduction to the Salesforce Mobile SDK for Android
Introduction to the Salesforce Mobile SDK for Android
 
Google Analytics for Developers
Google Analytics for DevelopersGoogle Analytics for Developers
Google Analytics for Developers
 
Implementing cast in android
Implementing cast in androidImplementing cast in android
Implementing cast in android
 
(MBL310) Workshop: Build iOS Apps Using AWS Mobile Services | AWS re:Invent 2014
(MBL310) Workshop: Build iOS Apps Using AWS Mobile Services | AWS re:Invent 2014(MBL310) Workshop: Build iOS Apps Using AWS Mobile Services | AWS re:Invent 2014
(MBL310) Workshop: Build iOS Apps Using AWS Mobile Services | AWS re:Invent 2014
 
Introduction to Firebase [Google I/O Extended Bangkok 2016]
Introduction to Firebase [Google I/O Extended Bangkok 2016]Introduction to Firebase [Google I/O Extended Bangkok 2016]
Introduction to Firebase [Google I/O Extended Bangkok 2016]
 
iOS & Android App Indexing & App Actions
iOS & Android App Indexing & App ActionsiOS & Android App Indexing & App Actions
iOS & Android App Indexing & App Actions
 
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
 
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
 
Beginning Native Android Apps
Beginning Native Android AppsBeginning Native Android Apps
Beginning Native Android Apps
 
Android Quiz App – Test Your IQ.pdf
Android Quiz App – Test Your IQ.pdfAndroid Quiz App – Test Your IQ.pdf
Android Quiz App – Test Your IQ.pdf
 
Cross-Platform Authentication with Google+ Sign-In
Cross-Platform Authentication with Google+ Sign-InCross-Platform Authentication with Google+ Sign-In
Cross-Platform Authentication with Google+ Sign-In
 
Introduction to Visualforce for Mobile Devices
Introduction to Visualforce for Mobile DevicesIntroduction to Visualforce for Mobile Devices
Introduction to Visualforce for Mobile Devices
 
Introduction to Android Programming
Introduction to Android ProgrammingIntroduction to Android Programming
Introduction to Android Programming
 
Building mobile apps on aws
Building mobile apps on awsBuilding mobile apps on aws
Building mobile apps on aws
 
Angular 11 google social login or sign in tutorial using angularx social-login
Angular 11 google social login or sign in tutorial using angularx social-loginAngular 11 google social login or sign in tutorial using angularx social-login
Angular 11 google social login or sign in tutorial using angularx social-login
 

Recently uploaded

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

Google+ sign in for mobile & web apps

  • 1. Google+ Sign-in for Mobile and Web By +Lakhdar Meftah
  • 2. Simple, secure authentication Interactive posts Over-the-air installs Integrated Hangouts Profile & social graph access Lasting re- engagement Engagement analytics Google+ plugins
  • 3. Google+ Sign-In Simple, secure authentication Build on a trusted relationship Works with your existing sign-in systems Cross-platform single sign on Avoid the hassle of creating your own authentication system Learn more about your users and their friend Give users more choice
  • 4. Interactive Posts Stand out in the stream Drive action Customize the post Measure impact Interactive post flow Pull people into your app to take specific actions
  • 5. Over-The-Air Installs Stay connected to users across their devices Drive automatic Android downloads from your website sign-ins One-step download to a user's device Measure your downloads
  • 6. Google+ Hangouts: Some things are better face to face
  • 7. App Customization Customize content and suggest connections for your users Improve engagement through users' connections Create accurate profiles Connect friends Spark content discovery Create dynamic marketing campaigns
  • 8. App Activities Increase app discovery and drive lasting re-engagement Build conversations and share activities that matter App activities in Google Search Be found on user's Google+ profile
  • 9. Google+ Platform Insights Meaningful analytics to optimize your integration Get the most out of Google+ Sign-In Understand your users Dig deeper into post performance Optimize your integration based on user activity Monitor installs to your Android app
  • 10. Plugins Grow your audience through identity, relationships, and sharing. +1 button Badge Recommendations Share Follow button Snippest
  • 12. 1. Enable the Google+ API 2. Configure your Eclipse project 3. Run the Google+ sample app 4. Initialize the PlusClient 1. Create a Google APIs Console project .
  • 13. 1.Add the Google+ Sign-In button to your app 2.Sign out the user 3.Revoking access tokens and disconnecting the app 4.Customizing your sign-in button 5.Localization 6.Server-side access for your app 2. Google+ Sign in for Android
  • 14. 1.Add the SignInButton in your application's layout: <com.google.android.gms.common.SignInButton android:id="@+id/sign_in_button" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 2.Initialize mPlusClient with the requested visible activities in your Activity.onCreate handler: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mPlusClient = new PlusClient.Builder(this, this, this) .setVisibleActivities("http://schemas.google.com/AddActivity", "http://schemas.google.com/BuyActivity") .build(); } 3.In the Android activity, register your button's OnClickListener to sign in the user when clicked: findViewById(R.id.sign_in_button).setOnClickListener(this); Add the Google+ Sign-In button
  • 15. 4.You should start to resolve any connection errors held in mConnectionResult. public void onClick(View view) { if (view.getId() == R.id.sign_in_button && !mPlusClient.isConnected()) { if (mConnectionResult == null) { mConnectionProgressDialog.show(); } else { try { mConnectionResult.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR); } catch (SendIntentException e) { // Try connecting again. mConnectionResult = null; mPlusClient.connect(); } } } } 5.When the user has successfully signed in, your onConnected handler will be called: public void onConnected(Bundle connectionHint) { mConnectionProgressDialog.dismiss(); Toast.makeText(this, "User is connected!", Toast.LENGTH_LONG).show(); }
  • 16. Sign out the user You can add a sign out button to your app. Create a button in your app to act as your sign out button. Attach an onClickListener to the button and configure the onClickmethod to disconnect the PlusClient: public void onClick(View view) { if (view.getId() == R.id.sign_out_button) { if (mPlusClient.isConnected()) { mPlusClient.clearDefaultAccount(); mPlusClient.disconnect(); mPlusClient.connect(); } } } This code clears which account is connected to the app. To sign in again, the user would choose their account again.
  • 17. Revoking access tokens and disconnecting the app The following code shows a simple example of calling the PlusClient.revokeAccessAndDisconnect method and responding to the onAccessRevoked event: // Prior to disconnecting, run clearDefaultAccount(). mPlusClient.clearDefaultAccount(); mPlusClient.revokeAccessAndDisconnect(new OnAccessRevokedListener() { public void onAccessRevoked(ConnectionResult status) { // mPlusClient is now disconnected and access has been revoked. // Trigger app logic to comply with the developer policies } });
  • 18. Customizing your sign-in button If you require additional customization, you can define a custom button: 1.Review the branding guidelines and download icons and images to use in your button. 2.Add the button to your application layout. <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:text="@string/common_signin_button_text_long" /> Localization The SDK provides localized strings for the SignInButton To view a full list of languages, you can examine the following directory in the SDK: <android-sdk-folder>/extras/google/google_play_services/libproject/google- play-services_lib/res/. In that location, you will find directories named values-<langcode>.
  • 19. Server-side access for your app Bundle appActivities = new Bundle(); appActivities.putString(GoogleAuthUtil.KEY_REQUEST_VISIBLE_ACTIVITIES, "<app-activity1> <app-activity2>"); String scopes = "oauth2:server:client_id:<server client-id>:api_scope:<scope1> <scope2>"; String code = null; try { code = GoogleAuthUtil.getToken(this, // Context context mPlusClient.getAccountName(), // String accountName scopes, // String scope appActivities // Bundle bundle ); } catch (IOException transientEx) { // network or server error, return; } catch (UserRecoverableAuthException e) { // Recover code = null; } catch (GoogleAuthException authEx) { // Failure. return; } catch (Exception e) { throw new RuntimeException(e); }
  • 20. String accessToken = null; try { accessToken = GoogleAuthUtil.getToken(this, mPlusClient.getAccountName(), "oauth2:" + TextUtils.join(' ', SCOPES)); } catch (IOException transientEx) { // network or server error, the call is expected to succeed if you try again later. // Don't attempt to call again immediately - the request is likely to // fail, you'll hit quotas or back-off. ... return; } catch (UserRecoverableAuthException e) { // Recover accessToken = null; } catch (GoogleAuthException authEx) { // Failure. The call is not expected to ever succeed so it should not be // retried. return; } catch (Exception e) { throw new RuntimeException(e); } To learn more, see: + Android Authorization methods. + Cross client identity
  • 21. References The Google+ Platform developers.google.com/+/ The Google+ Platform Channel on YouTube goo.gl/NBnZIz The Google+ Developers Blog http://goo.gl/hAcBTO