我跟着關於Android設備上的google log-in官方指南。不能使用谷歌登錄
我成功獲得Account picker
但是當我處理結果時,它總是不成功。
這是我做了什麼:
- 我登錄我的控制檯上,我對與我曾經對我的創建APK密鑰庫的控制檯命令獲得這個項目成立了
SHA-1
。 (新創建)。 - 然後我下載了google-services.json文件,我把它放到我的應用程序/文件夾中。
- 最後我實現了登錄在導的建議(張貼下面的代碼)
片段與登錄按鈕
public class SigninMenuFragment extends Fragment implements GoogleApiClient.OnConnectionFailedListener, GoogleApiClient.ConnectionCallbacks {
private final static String TAG = "SigninMenuFragment";
private Button btnFacebookLogin, btnSignin, btnSignup;
private Button btnGoogleLogin;
private static final int RC_SIGN_IN = 9001;
private GoogleApiClient mGoogleApiClient;
private ProgressDialog mProgressDialog;
public SigninMenuFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_signin_menu, container, false);
btnFacebookLogin = (Button) view.findViewById(R.id.btnLoginFacebook);
btnGoogleLogin = (Button) view.findViewById(R.id.btnLoginGoogle);
btnSignin = (Button) view.findViewById(R.id.btnSignIn);
btnSignup = (Button) view.findViewById(R.id.btnSignUp);
btnGoogleLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
googleLogin();
}
});
btnFacebookLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
facebookLogin();
}
});
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(getContext())
.enableAutoManage(getActivity() /* FragmentActivity */, this /* OnConnectionFailedListener */)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
return view;
}
private void facebookLogin() {
//todo
}
private void googleLogin() {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
handleSignInResult(result);
}
}
private void handleSignInResult(GoogleSignInResult result) {
Log.d(TAG, "handleSignInResult:" + result.isSuccess());
GoogleSignInAccount a = result.getSignInAccount();
if(a == null){
Log.d(TAG, "null");
}else{
Log.d(TAG, a.getDisplayName());
}
if (result.isSuccess()) {
// Signed in successfully, show authenticated UI.
GoogleSignInAccount acct = result.getSignInAccount();
} else {
// Signed out, show unauthenticated UI.
}
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onStop() {
super.onStop();
if (mProgressDialog != null) {
mProgressDialog.dismiss();
}
}
private void showProgressDialog() {
if (mProgressDialog == null) {
mProgressDialog = new ProgressDialog(getActivity());
mProgressDialog.setMessage("Loading");
mProgressDialog.setIndeterminate(true);
}
mProgressDialog.show();
}
private void hideProgressDialog() {
if (mProgressDialog != null && mProgressDialog.isShowing()) {
mProgressDialog.hide();
}
}
@Override
public void onConnected(@Nullable Bundle bundle) {
Log.d(TAG, "Connected");
}
@Override
public void onConnectionSuspended(int i) {
Log.d(TAG, "NOT Connected");
}
}
我的清單
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<application
android:name=".other.MyCustomApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".activities.SplashScreenActivity"
android:theme="@style/AppThemeNoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- ... -->
</application>
Gradle
//...
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.google.code.gson:gson:2.7'
compile 'com.android.support:multidex:1.0.1'
compile 'com.squareup.okhttp3:okhttp:3.9.0'
compile 'com.android.support:cardview-v7:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.google.android.gms:play-services-places:11.4.0'
compile 'com.google.android.gms:play-services-location:11.4.0'
compile 'com.google.android.gms:play-services-maps:11.4.0'
compile 'io.realm:android-adapters:2.1.0'
compile 'com.android.support:support-v4:25.3.1'
compile 'com.google.firebase:firebase-core:11.4.0'
compile 'com.google.firebase:firebase-messaging:11.4.0'
compile 'com.facebook.android:facebook-login:[4,5)'
compile 'com.google.android.gms:play-services-auth:11.4.0'
testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'
一些註釋:
- 我
activity
擴展FragmentActivity
- 登錄
button
是定製
我最大的疑問是關於SHA-1的產生,因爲其他文件是從谷歌開發控制檯複製粘貼。
我需要的帳戶擁有者的全名和基本用戶信息
我做錯了任何想法?
感謝所有
編輯
logcat的,當我按一下按鈕
9月10日至19日:32:40.974 23319-23319/utilitapps.prodottilastminute I/HwSecImmHelper :mSecurityInputMethodService爲空10-19 09:32:41.048 23319-23319/utilitapps.prodottilastminute V/AudioManager: playSoundEffect effectType:0 9月10日至19日:32:41.049 23319-23319/utilitapps.prodottilastminute V/AudioManager: querySoundEffectsEnabled ...
--------- beginning of system 10-19 09:32:41.068 23319-23483/utilitapps.prodottilastminute V/FA: Recording user
接合,MS:15514 9月10日至19日:32:41.069 23319-23483/utilitapps。prodottilastminute V/FA:使用測量 服務10-19 09:32:41.070 23319-23483/utilitapps.prodottilastminute V/FA:連接到遠程服務10-19 09:32:41.082 23319-23483/utilitapps.prodottilastminute V/FA:活動暫停,時間: 144716338 10-19 09:32:41.086 23319-23319/utilitapps.prodottilastminute V/ActivityThread:ActivityThread,callActivityOnCreate 10-19 09:32:41.087 23319-23319/utilitapps.prodottilastminute V/FA: onActivityCreated 9月10日至19日:32:41.087 23319-23483/utilitapps.prodottilastminute d/FA:記錄事件(FE): user_engagement(_E),捆綁[{firebase_event_origin(_O)=汽車, engagement_time_msec( _et)= 15514, firebase_screen_clas (_sc)= SplashScreenActivity, firebase_screen_id(_si)= 2950491777079955672}] 10-19 09:32:41.122 23319-23483/utilitapps.prodottilastminute V/FA:Using measurement service 10-19 09:32:41.122 23319- 23483/utilitapps.prodottilastminute V/FA:正在進行連接嘗試10-19 09:32:41.124 23319-23483/utilitapps.prodottilastminute V/FA:使用測量 服務10-19 09:32:41.124 23319-23483 /utilitapps.prodottilastminute V/FA:已在進行連接嘗試9月10日至19日:32:41.124 23319-23483/utilitapps.prodottilastminute V/FA:活動恢復, 時間:144716382 9月10日至19日:32:41.128 23319-23483/utilitapps.prodottilastminute D/FA:記錄事件(FE): screen_view(_vs),捆綁[{firebase_event_origin(_O)=汽車, firebase_previous_class(_PC)= SplashScreenActivity, firebase_previous_id(_pi)= 2950491777079955672, firebase_screen_class(_sc)= SignInHubActivity, firebase_screen_id(_si)= 2950491777079955674}] 10 -19 09:32:41.163 23319-23483/utilitapps.prodottilastminute V/FA:使用測量 服務10-19 09:32:41.164 23319-23483/utilitapps.prodottilastminute V/FA:正在進行連接嘗試10- 19 09:32:41.169 23319-23483/utilitapps.prodottilastminute V/FA: 的曝光時間小於1000毫秒。事件未發送。時間:57 10-19 09:32:41.169 23319-23483/utilitapps.prodottilastminute V/FA:使用測量 服務10-19 09:32:41.169 23319-23483/utilitapps.prodottilastminute V/FA:已嘗試連接正在進行中10-19 09:32:41.169 23319-23483/utilitapps.prodottilastminute V/FA:活動暫停,時間: 10-19 09:32:41.196 23319-23483/utilitapps.prodottilastminute D/FA: 連接到遠程服務10-19 09:32:41.196 23319-23483/utilitapps.prodottilastminute V/FA:處理排隊 服務任務:5 10-19 09:32:46.263 23319-23483/utilitapps.prodottilastminute V/FA:不活躍, 斷開服務
的logcat當我選擇的帳戶:
10-19 09:34:49.570 23319-23319/utilitapps.prodottilastminute I/HwSecImmHelper:mSecurityInputMethodService爲null 10-19 09: 34:49.583 23319-23319/utilitapps.prodottilastminute D/SigninMenuFragment:handleSignInResult:false 10-19 09:34:49.583 23319-23319/utilitapps.prodottilastminute D/SigninMenuFragment:null 10-19 09:34:49.585 23319- 25806/utilitapps.prodottilastminute V/FA: Activ恢復時間:144844854 10-19 09:34:49.592 23319-25806/utilitapps。prodottilastminute d/FA:記錄事件(FE): screen_view(_vs),捆綁[{firebase_event_origin(_O)=汽車, firebase_previous_class(_PC)= SignInHubActivity, firebase_previous_id(_pi)= 2950491777079955675, firebase_screen_class(_sc)= SplashScreenActivity , firebase_screen_id(_si)= 2950491777079955672}] 9月10日至19日:34:49.598 23319-23319/utilitapps.prodottilastminute I/HwSecImmHelper: mSecurityInputMethodService是空
https://developers.google.com/mobile/add?platform=android&cntapi=signin&cnturl=https:%2F%2Fdevelopers.google.com%2Fidentity%2Fsign-in%2Fandroid %2登錄%3F配置%3Dtrue&cntlbl =繼續%20添加%20登錄。請檢查包名,SHA-1代碼 –
。任何logcat? –
@IntelliJAmiya我試着用「mykeystone.jks」的路徑重新生成我的sha-1代碼,但沒有成功,我添加了我的logcat,即使我沒有看到任何有用的東西。感謝您的提示 –