Introduction
This is my second contribution to the discovery of the decade
(#b4a-rocks) and the fun continues!
Used SocialApi classes:
GooglePlus Provider : A non activity object that must be declared in any Sub Process_Globals .
GooglePlusOne Button : A CustomView (implements DesignerCustomView ) that can be used design-time .
SocialApiActivity : An activity object that can be only declared in a Sub Globals and is used to bind a GooglePlusProvider object to an activity through the GooglePlusProvider.SetActivity method.
Getting started
Download the latest socialapi package , extract it anywhere on your hard disk and note the folder name.
Copy the wrapper files (jar + xml ) in the socialapi folder into your B4A Libraries folder.
Each sample in the socialapi\googleplus\samples folder has AdditionalRes and AdditionalJar directives that have to be changed. Change the C:\b4a-dev folder to where you have extracted the socialapi archive.
The samples folder contains:
Sample1: Quick start sample that can be used as a bare-bone template for your new apps
Step-by-step new app tutorial (based on Sample1)
1. Add following code to your manifest:
AddApplicationText(
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>)
2. Add following directives to your project's main file:
#AdditionalRes: <your-installation-folder>\socialapi\googleplus\sdk\res, com.google.android.gms
#AdditionalJar: <your-installation-folder>\socialapi\googleplus\sdk\gplussdk.jar
3. Select the
SocialApi library from the list of the available libraries in the IDE. Declare a
GooglePlusProvider and a
SocialApiActivity object in
Sub Process_Globals and
Sub Globals respectively
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim GooglePlus As GooglePlusProvider
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim ThisActivity As SocialApiActivity
End Sub
4. Drop a CustomView in the designer and set the
CustomType property to
GooglePlusOneButton . Then, Generate a Click handler.
Sub BtnPlusOne_Click
Log("+1 Clicked!")
End Sub
5. Call the
GooglePlusProvider.SetActivity method in your
Sub Activity_Resume in order to bind the
GooglePlusProvider instance to the current activity passing the name of the event that will be raised every time the GooglePlus session changes. Also, call the BtnPlusOne.SetUrl to set the button's destination url.
Sub Activity_Resume
BtnPlusOne.SetUrl("http://www.b4x.com")
GooglePlus.SetActivity(ThisActivity.Initialize("googleplus"))
End Sub
6. Create your event handlers
Sub GooglePlus_Event (Provider as SocialApiProvider)
BtnConnect.Enabled = Not(Provider.Connected)
BtnDisconnect.Enabled = Provider.Connected
End Sub
Sub GooglePlust_Connected (Provider as SocialApiProvider)
Msgbox(Provider.Me, "!")
End Sub
Sub GooglePlus_Disconnected (Provider as SocialApiProvider)
Msgbox("Bye bye!", "JustDisconnected!")
End Sub
Sub GooglePlust_Failed (Provider as SocialApiProvider)
If Msgbox2("Failed to actualize your details."&CRLF&CRLF&"Retry?", "Error", "Yes", "No", "", Null) = DialogResponse.POSITIVE Then
Provider.Retry
End If
End Sub
7. Create the login/logout handlers. The login and logout actions are performed
asynchronously
Sub BtnConnect_Click
GooglePlus.Login
End Sub
Sub BtnDisconnect_Click
GooglePlus.Logout
End Sub
8. Do something and evaluate the result
Sub BtnGetPeopleVisible_Click
GooglePlus.PleaseWaitText = "Getting people information"
Dim Result As GooglePlusResult = GooglePlus.GetPeopleVisible
Msgbox(Result, "Done")
End Sub
Sub BtnGetPeople_Click
GooglePlus.PleaseWaitText = "Getting Erel's and Periklis' details"
Dim Result As GooglePlusResult = GooglePlus.GetPeople(Array As String ("102781867331980802136", "+PeriklisKoutsogiannis"))
Msgbox(Result, "Done")
End Sub
Done! Now we have to setup our app in our Google+ developer dashboard.
Setup our app in the Google+ developer dashboard (courtesy of androidhive.info )
1. Get your
SHA1 fingerprint from B4A IDE
2. Open
Google APIs console and on the left, under
APIs & auth section , click on
APIs and on the right enable
Google+ API service .
3. Now again on the left, click on
Credentials and on the right, click on
CREATE NEW CLIENT ID button. It will open a popup to configure a new client id.
4. In the popup, select
Installed application as Application type. Under Installed application type section select
Android and give your
project package name . This package name should be equal to your android project. For the sake of the example the package name is
info.androidhive.gpluslogin . Enter your
SHA1 fingerprint (from
step 1 ) in
Signing certificate fingerprint (SHA1) field and enable
Deep Linking and click on
Create Client ID button.
5. Now you should see a new client created for your android application.
Done! You are ready to go!
Useful links
Please test and post any feedback, questions, comments you may have!
That's all for now folks!~
Version history until SocialApi 2.3
2.3
Restructured again into a single package (socialapi) after finding out how to properly use the #AdditionalRes directive to avoid conflict with other b4a libraries
2.2
Restructured due to a conflict with AdMod library and GooglePlusProvider has its own package
2.0
Now part of the SocialApi unified wrapper library
Major code refactoring
Renamed: GooglePlus -> GooglePlusProvider
Renamed: WrapperActivity -> SocialApiActivity
Renamed: WrapperActivity.Initialize -> SocialApiActivity.GetWithEvent
Added: Google +1 button custom view
1.2
Change: Complete code refactoring. Now using our SocialApiWrapper library that provides common functionality to our SDK wrappers
1.1
Added: GooglePlus.GetPeopleVisible
1.0