我跟着关于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,即使我没有看到任何有用的东西。感谢您的提示 –