国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

安卓接入Google登錄

這篇具有很好參考價值的文章主要介紹了安卓接入Google登錄。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1.配置Google Cloud

2.添加 Google Play 服務(wù)

3.添加Google sign代碼

4.常見的CommonStatusCodes

后補Web clien(Auto-created for Google Sign-in)由來


1.配置Google Cloud

? ? ? ? 首先要在 Google Cloud?中創(chuàng)建一個項目。左側(cè)菜單->API和服務(wù)->憑據(jù)。進入之后先配置同意屏幕。

安卓接入Google登錄

安卓接入Google登錄

?安卓接入Google登錄

填寫必必要的信息,應(yīng)用名稱、用戶支持電子郵件地址、開發(fā)者電子郵件地址?。

到第3步添加測試用戶(只有填寫的測試用戶才能登錄測試)

?OAuth 同意屏幕 配置完成之后選擇憑據(jù) CREATECREDENTIALS?

安卓接入Google登錄

?選擇Android平臺應(yīng)用,填寫基礎(chǔ)的信息

安卓接入Google登錄

創(chuàng)建之后信息如下:

安卓接入Google登錄

關(guān)鍵點在一些其他的文檔教程中會發(fā)現(xiàn)存在一條 Web client(Auto-created for Google Sign-in),如下圖所示:這里暫時先不講,后續(xù)會講到這點安卓接入Google登錄

2.添加 Google Play 服務(wù)

在項目的頂級?build.gradle?文件中,確保包含 Google 的 Maven 代碼庫:

allprojects {
    repositories {
        google()

        // If you're using a version of Gradle lower than 4.1, you must instead use:
        // maven {
        //     url 'https://maven.google.com'
        // }
    }
}

然后,在應(yīng)用級?build.gradle?文件中,將?Google Play 服務(wù)聲明為依賴項:

apply plugin: 'com.android.application'
    ...

    dependencies {
        implementation 'com.google.android.gms:play-services-auth:20.2.0'
    }

3.添加Google sign代碼

? ? ? ? 廢話不多,直接上代碼


public class LoginActivity extends AppCompatActivity {

    private ActivityLoginBinding binding;

    // Google
    private GoogleSignInClient mGoogleSignInClient;
    private static final int RC_SIGN_IN = 9001;
    private static final String serverClientId = "49031722657-r22t4obi9v020qpba9d9f0eonchlcqn4.apps.googleusercontent.com";

    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        binding = ActivityLoginBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

        final Button loginButton = binding.login;
        loginButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                signIn();
            }
        });
        final Button logoutButton = binding.logout;
        logoutButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                signOut();
            }
        });

        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestId()
                .requestEmail()
                .requestIdToken(serverClientId)
                .build();

        // Build a GoogleSignInClient with the options specified by gso.
        mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
    }

    private void signIn() {
        Intent signInIntent = mGoogleSignInClient.getSignInIntent();
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }

    private void signOut() {
        mGoogleSignInClient.signOut().addOnCompleteListener(this, new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                Toast.makeText(getApplicationContext(), "signOut Complete!", Toast.LENGTH_LONG).show();
            }
        });
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RC_SIGN_IN) {
            // The Task returned from this call is always completed, no need to attach a listener.
            Task<GoogleSignInAccount> completedTask = GoogleSignIn.getSignedInAccountFromIntent(data);
            try {
                GoogleSignInAccount account = completedTask.getResult(ApiException.class);
                // Signed in successfully
                String result = "id = " + account.getId() + "\n" + "token = " + account.getIdToken();
                Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();
            } catch (ApiException e) {
                // The ApiException status code indicates the detailed failure reason.
                // Please refer to the GoogleSignInStatusCodes class reference for more information.
                String result = "signInResult:failed code=" + e.getStatusCode();
                Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();
            }
        }
    }
}

????????創(chuàng)建GoogleSignInOptions時可以選擇requestId()、requestEmail()、requestProfile()、requestIdToken(serverClientId)。

? ? ? ? getEmail() 獲取用戶的電子郵件地址

? ? ? ? getId()?獲取用戶的 Google ID(供客戶端使用)

????????getIdToken()?獲取用戶的 ID 令牌,如果要獲取idToken,則創(chuàng)建時需要用到requestIdToken(serverClientId),其中serverClientId就是創(chuàng)建的憑據(jù)中的客戶端ID值。

? ? ? ? 注意:如果使用在第1步中創(chuàng)建的signTest的客戶端ID的話在登錄時會返回錯誤碼 10。提示應(yīng)用配置錯誤。還記得在上述文中提到的Web client(Auto-created for Google Sign-in)在官方的文檔中有這樣一段描述

安卓接入Google登錄

? ? ? ? 按照官方描述我怎么也找不到自動創(chuàng)建的Web client。找不到就自己創(chuàng)建一個咯。在憑據(jù)中創(chuàng)建一個類型為Web應(yīng)用的客戶端ID即可,創(chuàng)建完成之后使用這個客戶端ID就可以正常登錄了。美滋滋。。。

安卓接入Google登錄

4.常見的CommonStatusCodes

定義 描述
0 SUCCESS 成功。
5

INVALID_ACCOUNT

客戶端試圖使用指定的無效帳戶名連接到服務(wù)。
7

NETWORK_ERROR

網(wǎng)絡(luò)錯誤。(國內(nèi)一般是未科學(xué)上網(wǎng)導(dǎo)致)
10

DEVELOPER_ERROR

應(yīng)用程序配置錯誤。此錯誤不可恢復(fù),將被視為致命錯誤。開發(fā)人員應(yīng)該在這之后查看日志,以確定更多可操作的信息。
16

CANCELED

客戶端斷開連接或主動取消(PendingResult.cancel())。

22 RECONNECTION_TIMED_OUT 連接超時。

????????詳細地址:https://developers.google.com/android/reference/com/google/android/gms/common/api/CommonStatusCodes#DEVELOPER_ERROR


搬運地址:https://developers.google.com/identity/sign-in/android/start

GitHub地址:https://github.com/googlesamples/google-services.git


后補Web clien(Auto-created for Google Sign-in)由來

????????在官方的接入文檔中有一個Configure a project的按鈕。使用這里的按鈕來創(chuàng)建客戶端ID的流程如下:安卓接入Google登錄?安卓接入Google登錄

?這里選擇Android,輸入包名,指紋,按照這種方式創(chuàng)建出來的客戶端ID會有2個。安卓接入Google登錄

?一個是Android,一個是Web應(yīng)用。終于知道Web client(Auto-created for Google Sign-in)是怎么來的

安卓接入Google登錄文章來源地址http://www.zghlxwxcb.cn/news/detail-429374.html

到了這里,關(guān)于安卓接入Google登錄的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Unity使用Gradle打包方式接入Firebase時配置文件google-services.json遇到的坑

    Unity使用Gradle打包方式接入Firebase時配置文件google-services.json遇到的坑

    1、首先在mainTemplate.gradle最上引入 ‘’com.google.gms.google-services’ 如下圖: 2、在mainTemplate.gradle添加任務(wù),將下載下來的google-services.json復(fù)制到gradle項目根目錄下 如下圖: 將你原始文件 google-services.json 中的 package_name 的屬性值 改為 com.unity3d.player 如下圖:

    2024年02月11日
    瀏覽(20)
  • PLSQL Developer 配置Oracle主目錄和OCI庫 & 連接登錄Oracle數(shù)據(jù)庫(完全指南)

    PLSQL Developer 配置Oracle主目錄和OCI庫 & 連接登錄Oracle數(shù)據(jù)庫(完全指南)

    溫馨提示: 一、如果你在機器上裝了oracle數(shù)據(jù)庫服務(wù)器,就不需要在單獨在該機器上安裝oracle客戶端了,因為裝oracle數(shù)據(jù)庫的時候會自動安裝oracle客戶端。 二、如果想用本地的計算機訪問或連接遠程的oracle數(shù)據(jù)庫,那么就必須在本地的計算機上安裝oracle客戶端軟件。在安裝

    2024年02月10日
    瀏覽(43)
  • Google Cloud 與 AWS對比

    1.1:計算服務(wù) 每個云平臺都提供各種計算服務(wù)。 如果您想要完全靈活地管理用于運行您的應(yīng)用程序的操作系統(tǒng)、軟件和硬件,您需要使用基礎(chǔ)架構(gòu)即服務(wù)選項。但是,有了靈活性,您就會承擔(dān)很多責(zé)任。 如果您想減少您的責(zé)任(關(guān)于擴展、可用性和持久性),您可能希望在

    2024年02月06日
    瀏覽(24)
  • Java接入內(nèi)購 Apple Pay、Google Play

    Java接入內(nèi)購 Apple Pay、Google Play

    內(nèi)購流程: 客戶端向服務(wù)器發(fā)起請求生成預(yù)訂單,服務(wù)器校驗后生成預(yù)訂單返回客戶端。若調(diào)起支付界面后未支付,則通知服務(wù)器取消本訂單。 客戶端拿到預(yù)訂單號后,在玩家完成付款操作后,攜帶預(yù)訂單號請求支付平臺,將預(yù)訂單號存儲在支付平臺中,并獲取支付憑證。

    2024年04月16日
    瀏覽(22)
  • Unity接入IAP、服務(wù)器驗單(Google Play)

    Unity接入IAP、服務(wù)器驗單(Google Play)

    最近因為項目需要,被分配來做項目SDK接入以及上架相關(guān)事宜。搞了好幾天關(guān)于Unity接入支付的SDK,接入很簡單,卡的最久的就是服務(wù)器驗單,google相關(guān)文檔也不是很全,走通之后覺得可以發(fā)出來共享一下,第一次寫文章,有什么不足多多見諒 Unity已經(jīng)集成了Google Pay、Apple

    2023年04月11日
    瀏覽(26)
  • GCP(Google Cloud Platform)入門一下

    當(dāng)前全球云計算的趨勢越來越大,許多大小公司都把自己的項目托管到云上平臺來運營,所以云上it開發(fā)運維等相關(guān)崗位也很有發(fā)展前景。大體上前幾的云計算巨頭的產(chǎn)品幾乎差不多,只是一些細節(jié)上面的差別。 建議參考文章:https://zhuanlan.zhihu.com/p/40983101 參考文章:https:/

    2024年02月03日
    瀏覽(22)
  • Google Cloud Natural Language情感分析教程

    運行 ?PowerShell 命令: (New-Object ? Net.WebClient).DownloadFile(\\\"https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe\\\", \\\"$env:TempGoogleCloudSDKInstaller.exe\\\") $env:TempGoogleCloudSDKInstaller.exe 安裝時,取消選擇” Bundled Python ”選項 打開Google Cloud SDK Shell (按照以下步驟輸入) port和address改

    2024年02月07日
    瀏覽(12)
  • 在 Google Cloud 上輕松部署開放大語言模型

    在 Google Cloud 上輕松部署開放大語言模型

    今天,“在 Google Cloud 上部署”功能正式上線! 這是 Hugging Face Hub 上的一個新功能,讓開發(fā)者可以輕松地將數(shù)千個基礎(chǔ)模型使用 Vertex AI 或 Google Kubernetes Engine (GKE)?部署到 Google Cloud。 Model Garden (模型庫)?是?Google Cloud?Vertex AI?平臺的一個工具,用戶能夠發(fā)現(xiàn)、定制和部署來自

    2024年04月14日
    瀏覽(17)
  • 如何2周拿到Google Cloud專業(yè)架構(gòu)師認證

    如何2周拿到Google Cloud專業(yè)架構(gòu)師認證

    由于工作內(nèi)容涉及到Google cloud,需要從零開始快速全面的了解一下Google Cloud,按照Google Cloud的Learning Path, Cloud Architect最適合全面了解Goolge Cloud的認證體系,于是決定花兩周的時間拿到Google Cloud 專業(yè)架構(gòu)師認證。 第一步先制定學(xué)習(xí)計劃,我們這兩周的學(xué)習(xí)分成的三個階段,

    2024年02月02日
    瀏覽(16)
  • 云計算基礎(chǔ):理解AWS、Azure和Google Cloud

    云計算已經(jīng)成為現(xiàn)代科技領(lǐng)域的重要驅(qū)動力之一。它為企業(yè)提供了靈活性、可伸縮性和成本效益,以滿足日益增長的計算和存儲需求。本文將深入探討三個主要的云計算提供商:Amazon Web Services (AWS)、Microsoft Azure 和 Google Cloud,幫助您更好地理解這些平臺的基礎(chǔ)知識和功能。

    2024年02月08日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包