Tôi đã triển khai đăng nhập bằng google mà không gặp vấn đề gì. Tôi đang sử dụng một mảnh ở vị trí của một hoạt động. Kiểm tra mã trên các thiên hà Samsung nó xảy ra khi hệ thống đăng nhập không hoạt động và không gọi phương thức onConnected. Điều này chỉ xảy ra lần đầu tiên khi các điều khoản và điều kiện hiển thị. Bạn có lời khuyên nào không? Đây là mã của tôi:Đăng nhập Android với Google cộng với vấn đề về lần đăng nhập đầu tiên
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initGoogle()
}
private void initGoogle() {
mPlusClient = new PlusClient.Builder(getActivity() , this , this).setVisibleActivities("http://schemas.google.com/AddActivity", "http://schemas.google.com/BuyActivity").build();
}
public void connectWithPlus() {
launchProgressScreen();
if(mPlusClient != null && !mPlusClient.isConnected()){
mPlusClient.connect();
}else{
mPlusClient.clearDefaultAccount();
mPlusClient.disconnect();
mPlusClient.connect();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_RESOLVE_ERR) {
mConnectionResult = null;
connectWithPlus();
}
}
@Override
public void onConnectionFailed(ConnectionResult result) {
if (result!= null && result.hasResolution()) {
try {
result.startResolutionForResult(getActivity(), REQUEST_CODE_RESOLVE_ERR);
} catch (SendIntentException e) {
connectWithPlus();
}
mConnectionResult = result;
}else{
onTaskResult(ProgressAlert.TASK_CANCEL_GOOGLE_LOGIN, null);
}
}
@Override
public void onConnected(Bundle connectionHint) {
AsyncTask<Object, Void, String> task = new AsyncTask<Object, Void, String>() {
@Override
protected String doInBackground(Object... params) {
String token = null;
try {
token = GoogleAuthUtil.getToken(getActivity(), mPlusClient.getAccountName(),
"oauth2:" + Scopes.PLUS_LOGIN);
} catch (UserRecoverableAuthException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (GoogleAuthException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return token;
}
@Override
protected void onPostExecute(String token){
getAuthDelegate().setToken(token, SocialAccount.google);
getAuthDelegate().loginUsingGoogle(token, new HashMap<String, String>());
}
};
task.execute();
}
@Override
public void onDisconnected() {
Log.w("Google Login", "called disconnected");
}
@Override
public void onClick(View v) {
connectWithPlus();
}
Bạn nhận được onConnectionĐược trả lại thay thế? – Lee
Không, tôi không nhận được gì. Nhưng kỳ lạ nếu y cố gắng kết nối lại nó gọi onConnected mà không bị lỗi. –
Bạn có thể đăng các bit liên quan của mã Hoạt động tương ứng không? Tôi muốn xem bạn đang gắn bó như thế nào trong vòng đời Activity. – Lee