2014-03-29 45 views
0

我正尝试使用Google Plus登录我的应用程序。我第一次尝试时,它会问我的许可,我接受它。在我转到Google Plus配置文件并删除我的应用程序后。现在我尝试重新登录,但它没有问我任何许可。如果我在GoogleApiClient配置中添加新范围,它会再次询问我。在我无法注销后使用Google Plus登录

如何永久清除我的手机我的应用程序?

我尝试这样;

if(mGoogleApiClient.isConnected()){ 
      Plus.AccountApi.clearDefaultAccount(mGoogleApiClient); 
      mGoogleApiClient.disconnect(); 
      mGoogleApiClient.connect(); 
      Log.d("deneme", "Google Profile shutdown"); 
     } 
     else 
      Log.d("deneme", "Google already shutdown"); 

而另一个问题,我试图让这样的用户的个人资料信息,我得到了错误。

@Override 
public void onConnected(Bundle connectionHint) { 
    mSignInClicked = false; 
    Log.d("deneme", "onConnected"); 
    if(mGoogleApiClient.isConnected()){ 
     Person currentPerson = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient); 
     if(currentPerson.isPlusUser()) 
      Log.d("deneme", currentPerson.getDisplayName()); 
    } 
} 

enter image description here

public class NotRegistered extends SherlockFragment implements View.OnClickListener, ConnectionCallbacks, OnConnectionFailedListener { 

@Override 
public void onStart() { 
    super.onStart(); 
    mGoogleApiClient.connect(); 
    Log.d("deneme","onStart"); 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    if(mGoogleApiClient.isConnected()){ 
     mGoogleApiClient.disconnect(); 
     Log.d("deneme","onStop"); 
    } 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    Log.d("deneme", "onActivityCreated"); 
    super.onActivityCreated(savedInstanceState); 
    ViewFlipper vf = (ViewFlipper) getActivity().findViewById(R.id.viewFlipper1); 
    vf.setFlipInterval(11000); 
    vf.startFlipping(); 

    Button b_gmail = (Button) getActivity().findViewById(R.id.BTN_sign_gmail); 
    Button m_loginButton = (Button) getActivity().findViewById(R.id.BTN_register); 
    Button m_registerButton = (Button) getActivity().findViewById(R.id.BTN_login); 

    getActivity().findViewById(R.id.sign_in_button).setOnClickListener(this); 

    mSignInButton = (SignInButton) getActivity().findViewById(R.id.sign_in_button); 
    mSignInButton.setOnClickListener(this); 

    b_facebook = (LoginButton) getActivity().findViewById(R.id.BTN_sign_facebook); 
    b_facebook.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); 
    b_facebook.setReadPermissions(Arrays.asList("user_likes", "email", "user_status", "user_about_me")); 
    b_facebook.setBackgroundResource(R.drawable.login_facebook_button); 
    b_facebook.setFragment(this); 

    m_loginButton.setOnClickListener(this); 
    m_registerButton.setOnClickListener(this); 
    b_gmail.setOnClickListener(this); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    Log.d("deneme", "Not Register onCreateView"); 
    View view; 
    view = inflater.inflate(R.layout.notregistered_fragment, container, false); 
    uiHelper = new UiLifecycleHelper(getActivity(), callback); 
    uiHelper.onCreate(savedInstanceState); 

    mGoogleApiClient = new GoogleApiClient.Builder(getActivity().getApplicationContext()) 
     .addApi(Plus.API, null) 
     .addScope(Plus.SCOPE_PLUS_LOGIN) 
     .addConnectionCallbacks(this) 
     .addOnConnectionFailedListener(this) 
     .build(); 
    return view; 
} 

private void onSessionStateChange(Session session, SessionState sessionState, Exception exception){ 
    if(sessionState.isOpened()){ 
     Log.d("deneme", "Oturum Açık"); 
     Log.d("deneme", session.getAccessToken()); 
     //boolean returnVal = new UserRecord().execute(val); 
     makeMeRequest(session); 
      Intent i = new Intent(getActivity(), Pager.class); 
      startActivity(i); 
      getActivity().finish(); 
    } else { 
     Log.d("deneme", "Oturum Kapalı"); 
    } 
} 

private void makeMeRequest(final Session session) { 
    Request request = Request.newMeRequest(session, new Request.GraphUserCallback() { 
     @Override 
     public void onCompleted(GraphUser user, Response response) { 
      if (session == Session.getActiveSession()) { 
       if (user != null) { 
        new NewUserAsync().execute("facebook", user.getUsername(), user.getFirstName(), 
          user.getLastName(), user.getProperty("email").toString(), user.getId(), 
          user.getBirthday().toString()); 
       } 
      } 
      if (response.getError() != null) { 
       Log.d("deneme",response.getError().toString()); 
      } 
     } 
    }); 
    request.executeAsync(); 

} 


private Session.StatusCallback callback = new Session.StatusCallback() { 

    @Override 
    public void call(Session session, SessionState state, Exception exception) { 
     Log.d(TAG, "callback"); 
     onSessionStateChange(session, state, exception); 
    } 
}; 

@Override 
public void onClick(View v) { 
    Register register = new Register(); 
    switch (v.getId()) { 
    case R.id.BTN_sign_gmail: 
     if(mGoogleApiClient.isConnected()){ 
      Plus.AccountApi.clearDefaultAccount(mGoogleApiClient); 
      mGoogleApiClient.disconnect(); 
      mGoogleApiClient.connect(); 
      if(mGoogleApiClient.isConnected()) 
       Log.d("deneme", "Google profili sonlandırılamadı"); 
      else 
       Log.d("deneme", "Google profili sonlandırıldı"); 
     } else 
      Log.d("deneme", "Oturum zaten kapalı"); 
     break; 
    case R.id.BTN_register: 
     getActivity().getSupportFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.test, register, "register").commit(); 
     break; 
    case R.id.BTN_login: 
     Intent i = new Intent(getActivity().getApplicationContext(), Pager.class); 
     startActivity(i); 
     //getActivity().getSupportFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.test, register, "register").commit(); 
     break; 
    case R.id.sign_in_button: 
     if(!mGoogleApiClient.isConnecting()){ 
      mSignInClicked = true; 
      resolveSignInError(); 
      Toast.makeText(getActivity(), "küçük buttona tıklandı", Toast.LENGTH_LONG).show(); 
     } 

     break; 
    default: 
     break; 
    } 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    uiHelper.onActivityResult(requestCode, resultCode, data); 
    Log.d("deneme", "onActivityResult"); 

    if(requestCode == RC_SIGN_IN){ 
     if(resultCode != getActivity().RESULT_OK){ 
      mSignInClicked = false; 
     } 
    } 

    mIntentInProgress = false; 
    if(!mGoogleApiClient.isConnecting()){ 
     mGoogleApiClient.connect(); 
    } 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    uiHelper.onDestroy(); 
    Log.d("deneme", "onDestroy"); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    uiHelper.onPause(); 
    Log.d("deneme", "onPause"); 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    uiHelper.onResume(); 
    Log.d("deneme", "onResume"); 
} 

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    uiHelper.onSaveInstanceState(outState); 
    Log.d("deneme", "onSaveInstanceState"); 
} 

public static final String TAG = "deneme"; 
private LoginButton b_facebook; 
private UiLifecycleHelper uiHelper; 

// Google Plus Connect Starting 

@Override 
public void onConnected(Bundle connectionHint) { 
    mSignInClicked = false; 
    Toast.makeText(getActivity(), "Kullanıcı bağlı", Toast.LENGTH_LONG).show(); 
    Log.d("deneme", "onConnected"); 
} 

@Override 
public void onConnectionSuspended(int cause) { 
    mGoogleApiClient.connect(); 
} 

@Override 
public void onConnectionFailed(ConnectionResult result) { 
    if(!mIntentInProgress){ 
     mConnectionResult = result; 
     if(mSignInClicked){ 
      resolveSignInError(); 
     } 
    } 
} 

private void resolveSignInError() { 
    Log.d("deneme", "Buraya bir geldi : resolveSignInError"); 
     if (mConnectionResult.hasResolution()) { 
     try { 
      mIntentInProgress = true; 
      mConnectionResult.startResolutionForResult(getActivity(), RC_SIGN_IN); 
      Log.d("deneme", "resolveSignInError try içerisinde"); 
     } catch (SendIntentException e) { 
      mIntentInProgress = false; 
      mGoogleApiClient.connect(); 
      Log.d("deneme", "resolveSignInError catch içerisinde"); 
     } 
     } 
    } 

SignInButton mSignInButton; 
GoogleApiClient mGoogleApiClient; 
ConnectionResult mConnectionResult; 
boolean mIntentInProgress = false; 
boolean mSignInClicked; 
int RC_SIGN_IN = 0; 
} 

241行的:public void onConnectionSuspended(INT原因)函数。

首先,我如何删除我的测试用户,我怎么能得到他们的个人资料信息..

感谢您的帮助..

+0

对不起,我不能添加我的日志:http://213.243.53.12/log.png –

回答

0

我觉得你的代码是好这两个问题(检查信息和注销用户),你的问题是一个NullPointerException。 查看您的班级NotRegistered line 241。

我敢打赌,您的mGoogleApiClient未初始化。 你能告诉我你在哪里初始化mGoogleApiClient?

+0

谢谢关注。其实我不认为我的问题关于GoogleApiClient初始化,因为当我添加新的范围它问我的权限。我添加了我的所有代码。 –

+0

在第241行添加mGoogleApiClient!= null验证,然后重试。看起来,在你的“onconnectionsuspended”客户端为空 –

+0

另一点,如果你正在启动应用程序,并且你得到onconnectionsuspended“事件...是有问题的。你有没有请求你的API密钥并注册在你的应用程序? –

0

虽然是晚了,但我认为你应该添加在里面创建

// Initializing google plus api client 
private GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this).addConnectionCallbacks(this).addOnConnectionFailedListener(this).addApi(Plus.API, null).addScope(Plus.SCOPE_PLUS_LOGIN).build();