在Android应用程序中从谷歌和Facebook注销

Jar*_*vis 10 android android-activity android-studio facebook-sdk-3.0 google-plus-signin

我已经使用各自的方法集成了谷歌和Facebook注册.但是在成功签名之后,我想打开不同的活动,同样用户可以去各种不同的活动.我使用了操作栏,我可以选择从用户登录的任一帐户中退出.如果我处于不同的活动,那么我可以在主要活动中退出用户.我得到一个例外,我无法将apiclient引用(对于谷歌)和会话引用(对于Facebook)传递给另一个活动.请帮忙.提前致谢.

som*_*esh 14

从谷歌退出:

只需在您的新活动中添加此项,您希望google +的注销按钮位于此处:

@Override
protected void onStart() {
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();
    mGoogleApiClient.connect();
    super.onStart();
}
Run Code Online (Sandbox Code Playgroud)

接下来你可以在按钮上设置setOnClickListener:

signout.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
      Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
              new ResultCallback<Status>() {
                  @Override
                  public void onResult(Status status) {
                      // ...
                      Toast.makeText(getApplicationContext(),"Logged Out",Toast.LENGTH_SHORT).show();
                      Intent i=new Intent(getApplicationContext(),MainActivity.class);
                      startActivity(i);
                  }
              });
  }
});
Run Code Online (Sandbox Code Playgroud)


小智 12

脸书

LoginManager.getInstance().logOut();
Run Code Online (Sandbox Code Playgroud)

对于谷歌

GoogleSignInOptions gso = new GoogleSignInOptions.
                    Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).
                    build();

            GoogleSignInClient googleSignInClient=GoogleSignIn.getClient(context,gso);
            googleSignInClient.signOut();
Run Code Online (Sandbox Code Playgroud)


Mik*_*nko 6

从脸书登出:

public static void callFacebookLogout(Context context) {
Session session = Session.getActiveSession();
if (session != null) {

    if (!session.isClosed()) {
        session.closeAndClearTokenInformation();
        //clear your preferences if saved
    }
} else  {

    session = new Session(context);
    Session.setActiveSession(session);

    session.closeAndClearTokenInformation();
        //clear your preferences if saved

 }

}
Run Code Online (Sandbox Code Playgroud)

从谷歌登出:

@Override
public void onClick(View view) {
if (view.getId() == R.id.sign_out_button) {
if (mGoogleApiClient.isConnected()) {
  Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
  mGoogleApiClient.disconnect();
  mGoogleApiClient.connect();
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

指南文档


Pra*_*ind 6

更新自 2017 年 11 月 7 日登录和注销事件的最新代码

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestEmail()
                    .build();
    GoogleSignInClient mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
Run Code Online (Sandbox Code Playgroud)

谷歌登出

 mGoogleSignInClient.signOut()
                .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        // [START_EXCLUDE]
                        updateUI(null);
                        // [END_EXCLUDE]
                    }
                });
Run Code Online (Sandbox Code Playgroud)

谷歌撤销访问

 mGoogleSignInClient.revokeAccess()
                .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        // [START_EXCLUDE]
                        updateUI(null);
                        // [END_EXCLUDE]
                    }
                });
Run Code Online (Sandbox Code Playgroud)

在这里参考谷歌代码

登出脸书

LoginManager.getInstance().logOut();
Run Code Online (Sandbox Code Playgroud)

在此处参考 Facebook 文档


And*_*rea 5

只需添加您的新活动:

 @Override
        protected void onStart() {
            mGoogleApiClient.connect();
            super.onStart();
        }
Run Code Online (Sandbox Code Playgroud)

进而

@Override
    public void onClick(View v)  {
            switch (v.getId()) {
                case R.id.sign_out_button2:

                        Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
                        mGoogleApiClient.disconnect();
                        mGoogleApiClient.connect();
Run Code Online (Sandbox Code Playgroud)


hid*_*s02 5

注销 Google 身份验证的最简单方法:

GoogleSignIn.getClient(getApplicationContext(), GoogleSignInOptions.DEFAULT_SIGN_IN).signOut();
Run Code Online (Sandbox Code Playgroud)