2015-01-14 21 views
7

Tôi có thiết lập đăng nhập google plus cho ứng dụng thông qua GoogleApiClient.Kết nối GoogleApiClient luôn không thành công lần đầu tiên nhưng đã thành công lần thứ hai

Bất cứ khi nào ứng dụng được cài đặt lần đầu tiên và cố gắng để thực hiện kết nối thông qua GoogleApiClient nó không bao giờ được thành công và luôn luôn kết thúc tại onConnectionFailed với result chứa:

ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{4130e760: [email protected]}} 

Nhưng khi thứ hai thời gian đăng nhập gọi nó nó được thành công và onConnected lần truy cập. Tại sao điều đó có thể làm cho nó thành công trong nỗ lực đầu tiên?

Có điều gì sai trong thông số Builder của tôi không?

public void connectGoogleApi() { 
    mGoogleApiClient = new GoogleApiClient.Builder(mainAppContext).addConnectionCallbacks(this).addOnConnectionFailedListener(this).addApi(Plus.API).addScope(Plus.SCOPE_PLUS_LOGIN).build(); 
    mGoogleApiClient.connect(); 
} 

public void onConnectionFailed(ConnectionResult result) { 
    if (!result.hasResolution()) { 
     GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this, 0).show(); 
     return; 
    } 

    if (!mIntentInProgress) { 
     // Store the ConnectionResult for later usage 
     mConnectionResult = result; 
     resolveSignInError(); 
    } 

} 
+0

không rõ ràng do lỗi, người dùng cần cho phép ứng dụng của bạn xác thực – tyczj

+0

Không có hộp thoại nào xuất hiện và nó thành công như thế nào trong lần tiếp theo mà không cần người dùng làm gì? – Maven

Trả lời

0

Tôi đã gặp sự cố tương tự, lần này gọi phương thức 'connect()', lần này trong phương thức 'onConnected' đã sửa nó. Lạ thật.

@Override 
    public void onConnected(final Bundle arg0) { 
    Logger.log("On connected"); 
    DevicePreferences.getGoogleApiClient().connect(); 
} 
2

Như tài liệu chính thức cho biết here:

Nếu bạn đang sử dụng GoogleApiClient để kết nối với các API yêu cầu xác thực, như Google Drive hoặc Google Play Games, có một cơ hội tốt cho nỗ lực kết nối đầu tiên của bạn sẽ thất bại và ứng dụng của bạn sẽ nhận được cuộc gọi đến onConnectionFailed() với lỗi SIGN_IN_REQUIRED vì tài khoản người dùng không được chỉ định.

+0

Điều tuyệt vời để biết. Điều đó đã giúp tôi rất nhiều! –

Các vấn đề liên quan