با سلام و سپاس
دید تا حالا تو برنامه های متعددی به جای ثبت نام با کانت های گوگل و فیسبوک و غیره لاگین میشن ؟
حتما خیلی براتون جالب بوده ؟
امروز میخواهیم این روش رو به شما به راحت ترین شیوه بیان کنیم برای این کار باید طبق زیر عمل کنید :
#Region Project Attributes #ApplicationLabel: B4A Example #VersionCode: 1 #VersionName: 'SupportedOrientations possible values: unspecified, landscape or portrait. #SupportedOrientations: unspecified #CanInstallToExternalStorage: False #End Region #Region Activity Attributes #FullScreen: False #IncludeTitle: True #End Region #Extends: android.support.v7.app.AppCompatActivity Sub Process_Globals 'These global variables will be declared once when the application starts. 'These variables can be accessed from all modules. 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 id As String = "" Dim sign As SignGoogle End Sub Sub Activity_Create(FirstTime As Boolean) 'Do not forget to load the layout file created with the visual designer. For example: 'Activity.LoadLayout("Layout1") sign.Initialize(id,Me) Dim ls1 As List ls1 = sign.GetAccountList Dim Builder As MaterialDialogBuilder Builder.Initialize("GoogleList") Dim si As MaterialSimpleListItem Builder.Title("یک حساب انتخاب کنید") If ls1.Size < 1 Then Else For i = 0 To ls1.Size -1 Dim cs As CSBuilder cs.Initialize.Size(13).Append(ls1.Get(i)).PopAll si.Initialize(Null, cs) si.BackgroundColor = Colors.White Builder.AddSimpleItem(si) Next Builder.Show End If End Sub Sub GoogleList_SimpleItemSelected (Dialog As MaterialDialog, Position As Int, Item As MaterialSimpleListItem) ToastMessageShow(Item.Content, False) sign.SelectAccount(Item.Content) sign.RequestSign("UserLogin") Dialog.Dismiss End Sub Sub UserLogin(Data As Map,Login As Boolean) Log(Data.Get("id")) Log(Data.Get("email")) Log(Data.Get("name")) Log(Data.Get("family_name")) Log(Data.Get("picture")) End Sub Sub Activity_Resume End Sub Sub Activity_Pause (UserClosed As Boolean) End Sub
و یک کclass هم دارین به این صورت :
Private Sub Class_Globals Private clientId As String : clientId = "" 'enter client id here 'Private clientSecret As String : clientSecret = "" 'client secret here Private AccessToken As String Private userInfoLink As String : userInfoLink = "https://www.googleapis.com/oauth2/v1/userinfo" Private m_GoogleAccountManager As clsB_GoogleAccountManager Private modules As Object Private evt As String Private l_GoogleAccounts() As Object End Sub 'Step 1 Public Sub Initialize(sClientID As String,module As Object) clientId = sClientID m_GoogleAccountManager.Initialize(0) modules = module End Sub 'Step 3 Sub SelectAccount(AccountName As String) For Each l_joAccount As JavaObject In l_GoogleAccounts If l_joAccount.GetField ("name") = AccountName Then Exit End If Next Dim l_sScopes As String = "email profile" Dim l_sAuthTokenType As String = $"oauth2:${l_sScopes}"$ Dim l_sAccessToken As String = m_GoogleAccountManager.getAuthToken_foreground(l_joAccount,l_sAuthTokenType) AccessToken = l_sAccessToken End Sub 'Step 2 Sub GetAccountList As List l_GoogleAccounts = m_GoogleAccountManager.getAccountsByType("com.google") If l_GoogleAccounts.Length = 0 Then Return Null Dim l_sAccountNames As List : l_sAccountNames.Initialize For Each l_joAccount As JavaObject In l_GoogleAccounts Dim l_sAccountName As String = l_joAccount.GetField ("name") l_sAccountNames.Add(l_sAccountName) Next Return l_sAccountNames End Sub 'Step 4 Sub RequestSign(Event As String) evt = Event Dim dl As PersianFastNetwork dl.initialize("dl").BuildGetQuery(userInfoLink,"getUserDetails") _ .addParametrs("access_token",AccessToken).executRequesAsString ProgressDialogShow2("درحال دریافت اطلاعات...",False) End Sub Sub dl_onGetStringOkListener(Result As String , Tag As String ) ProgressDialogHide If Result <> Null Then Select Tag Case "GetAccessToken" Dim JSON As JSONParser Dim map1 As Map JSON.Initialize(Result) map1=JSON.NextObject AccessToken=map1.Get("access_token") CallSub3(modules,evt,map1,False) Case "getUserDetails" Dim JSON As JSONParser Dim map1 As Map JSON.Initialize(Result) map1 = JSON.NextObject CallSub3(modules,evt,map1,True) End Select End If End Sub
خوب حالا من توضیحات لازم رو میدم
شما یه پروژه باز میکنید و کد های لولی رو داخل اکتیویتی main پست میکنید .
بعد یه class به اسم SignGoogle میسازد و کد های class رو داخلش پست میکنید .
بعد وارد منیفست میشید کد های زیر رو داخل منیفست قرار میدی :
AddPermission(android.permission.GET_ACCOUNTS) AddPermission(android.permission.USE_CREDENTIALS) AddPermission(android.permission.INTERNET)
اول از همه ما باید وارد سایت گوگل بشیم از آدرس زیر که راحترین راه می باشد برای ساخت آیدی یا همان api keys
http://console.developers.google.com
و بعد از ساخت api key مربوطه اون رو در اکتیویتی main در قسمت id میزاریم و باهاش به گوشی لاگین میشیم که توش برنامه گوگل سرویس و پلی نصب باشه
مدرس : مجید گودرزی
این آموزش از قبل تو کانال بود فقط چون دیدیم ….. هایی کپی کدها رو تو سایت های خوشون منتشر دادن به اسم خودشون بنا به درخواست نویسنده آقای گودرزی دوباره داخل سایت گذاشته شد که ……………………. موفق باشید.
سلام.
لطفا کتابخانه های MaterialDialog و MaterialSimpleListItem رو هم قرار بدید. پیدا نکردم.
مرسی.
سلام و سپاس
لطفا در تلگرام پیام بدید
Crypt3r@