Android開發(fā)-Google登錄

1 注冊(cè)Google賬戶

創(chuàng)建地址

屏幕快照 2019-01-03 上午9.13.22.png

2 申請(qǐng)開發(fā)者

25美元呢

開發(fā)者申請(qǐng)

屏幕快照 2019-01-03 上午9.21.27.png

3 創(chuàng)建憑據(jù)

創(chuàng)建憑據(jù)

選擇客戶端ID
屏幕快照 2019-01-03 上午9.27.06.png

4 開發(fā)

官網(wǎng)文檔

(1)環(huán)境配置

在Android Studio中,選擇工具> Android> SDK Manager骄瓣。
滾動(dòng)到包列表的底部,然后選擇其他> Google Repository算芯。該軟件包將下載到您的計(jì)算機(jī)并安裝在SDK環(huán)境中的android-sdk-folder / extras / google / google_play_services中努咐。

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

在項(xiàng)目的頂級(jí)build.gradle文件中嫂侍,確保包含Google的Maven存儲(chǔ)庫(kù)

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)用級(jí)build.gradle文件中漏设,將Google Play服務(wù)聲明為依賴項(xiàng):

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

    dependencies {
        compile 'com.google.android.gms:play-services-auth:15.0.1'
    }

(3)配置Google登錄和GoogleSignInClient對(duì)象

  • onCreate方法中
// Configure sign-in to request the user's ID, email address, and basic
// profile. ID and basic profile are included in DEFAULT_SIGN_IN.
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail()
        .build();
// Build a GoogleSignInClient with the options specified by gso.
mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
  • onStart方法中檢查用戶是否已使用Google登錄您的應(yīng)用
// Check for existing Google Sign In account, if the user is already signed in
// the GoogleSignInAccount will be non-null.
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
updateUI(account);

(4)將Google登錄按鈕添加到您的應(yīng)用 (可選)

<com.google.android.gms.common.SignInButton
 android:id="@+id/sign_in_button"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" />

[圖片上傳失敗...(image-c9a06c-1546480407359)]

(5 )登錄

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

在活動(dòng)的onActivityResult方法中為用戶獲取對(duì)象。

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

    // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
    if (requestCode == RC_SIGN_IN) {
        // The Task returned from this call is always completed, no need to attach
        // a listener.
        Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
        handleSignInResult(task);
    }
}

GoogleSignInAccount對(duì)象包含有關(guān)已登錄用戶的信息今妄,例如用戶的名稱

private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
    try {
        GoogleSignInAccount account = completedTask.getResult(ApiException.class);

        // Signed in successfully, show authenticated UI.
        updateUI(account);
    } catch (ApiException e) {
        // The ApiException status code indicates the detailed failure reason.
        // Please refer to the GoogleSignInStatusCodes class reference for more information.
        Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
        updateUI(null);
    }
}

(6)獲取資料


GoogleSignInAccount acct = GoogleSignIn.getLastSignedInAccount(getActivity());
if (acct != null) {
  String personName = acct.getDisplayName();
  String personGivenName = acct.getGivenName();
  String personFamilyName = acct.getFamilyName();
  String personEmail = acct.getEmail();
  String personId = acct.getId();
  Uri personPhoto = acct.getPhotoUrl();
}

(7)退出登錄

private void signOut() {
    mGoogleSignInClient.signOut()
            .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    // ...
                }
            });
}

(8)斷開帳戶

private void revokeAccess() {
    mGoogleSignInClient.revokeAccess()
            .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    // ...
                }
            });
}

(1)服務(wù)端需要token 但是 我們得到的token == null

   GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.server_client_id))
                .requestEmail()
                .build();

server_client_id哪里來(lái)的

文檔鏈接

創(chuàng)建配置
選擇web server
選擇剛剛創(chuàng)建的
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末郑口,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子盾鳞,更是在濱河造成了極大的恐慌犬性,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雁仲,死亡現(xiàn)場(chǎng)離奇詭異仔夺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)攒砖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)日裙,“玉大人吹艇,你說(shuō)我怎么就攤上這事“悍鳎” “怎么了受神?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)格侯。 經(jīng)常有香客問我鼻听,道長(zhǎng)财著,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任撑碴,我火速辦了婚禮撑教,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘醉拓。我一直安慰自己伟姐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布亿卤。 她就那樣靜靜地躺著愤兵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪排吴。 梳的紋絲不亂的頭發(fā)上秆乳,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音钻哩,去河邊找鬼矫夷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛憋槐,可吹牛的內(nèi)容都是我干的双藕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼阳仔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼忧陪!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起近范,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤嘶摊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后评矩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叶堆,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年斥杜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了虱颗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蔗喂,死狀恐怖忘渔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缰儿,我是刑警寧澤畦粮,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響宣赔,放射性物質(zhì)發(fā)生泄漏预麸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一儒将、第九天 我趴在偏房一處隱蔽的房頂上張望吏祸。 院中可真熱鬧,春花似錦椅棺、人聲如沸犁罩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)床估。三九已至,卻和暖如春诱渤,著一層夾襖步出監(jiān)牢的瞬間丐巫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工勺美, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留递胧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓赡茸,卻偏偏與公主長(zhǎng)得像缎脾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子占卧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • afinalAfinal是一個(gè)android的ioc遗菠,orm框架 https://github.com/yangf...
    wgl0419閱讀 6,264評(píng)論 1 9
  • afinalAfinal是一個(gè)android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,406評(píng)論 2 45
  • 實(shí)習(xí)的目的是鍛煉自己的動(dòng)手能力华蜒,現(xiàn)在的我們都還是在父母的庇護(hù)下成長(zhǎng)的辙纬,沒有真正的面對(duì)生活和這個(gè)社會(huì)。 ...
    今晚暴富閱讀 320評(píng)論 0 3
  • 網(wǎng)絡(luò)叭喜,手機(jī)……信息眼花繚亂贺拣,我們每天都被這些綁架!我們沒時(shí)間去思考捂蕴,沒時(shí)間去沉淀譬涡!所以需要我們擺脫網(wǎng)絡(luò)的枷鎖,有自...
    建業(yè)武亮亮閱讀 220評(píng)論 0 1
  • 今天在女兒培訓(xùn)學(xué)校碰到一個(gè)家長(zhǎng),她說(shuō):'彤彤媽媽委可,你不是說(shuō)自己瘦不下去嗎,你怎么瘦了?'是呀着倾,我是怎么瘦的呢拾酝?我們...
    風(fēng)過__留痕閱讀 1,217評(píng)論 0 1