2014-11-20 13 views
6

मैं पहली डेमो का उपयोग कर एपीआई एंड्रॉयड पर Google डिस्क के साथ काम करने का प्रयास करें,:एंड्रॉयड एपीआई गूगल ड्राइव "कनेक्शन विफल"

https://github.com/googledrive/android-quickstart

हालांकि, मैं इस त्रुटि है कि मैं का समाधान नहीं कर सकता है।

GoogleApiClient कनेक्शन विफल: ConnectionResult {statusCode = SIGN_IN_REQUIRED, संकल्प = PendingIntent {421d40e8: [email protected]}}

@Override 
public void onConnectionFailed(ConnectionResult result) { 
    // Called whenever the API client fails to connect. 
    Log.i(TAG, "GoogleApiClient connection failed: " + result.toString()); 
    if (!result.hasResolution()) { 
     // show the localized error dialog. 
     GooglePlayServicesUtil.getErrorDialog(result.getErrorCode(), this, 0).show(); 
     return; 
    } 
    // The failure has a resolution. Resolve it. 
    // Called typically when the app is not yet authorized, and an 
    // authorization 
    // dialog is displayed to the user. 
    try { 
     result.startResolutionForResult(this, REQUEST_CODE_RESOLUTION); 
    } catch (SendIntentException e) { 
     Log.e(TAG, "Exception while starting resolution activity", e); 
     // There was an error with the resolution intent. Try again. 
     mGoogleApiClient.connect(); 
    } 
} 


@Override 
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { 
    if (requestCode == REQUEST_CODE_RESOLUTION) { 

     if (resultCode == RESULT_OK) { 
      Log.i(TAG, "Error resolution success."); 

      // Make sure the app is not already connected or attempting to connect 
      if (!mGoogleApiClient.isConnecting() && 
        !mGoogleApiClient.isConnected()) { 
       mGoogleApiClient.connect(); 
      } 

     } else { 
      GooglePlayServicesUtil.getErrorDialog(requestCode, this, 0).show(); 
     } 

     break; 
    } 
} 
+1

मेरे मामले में गूगल के लिए जा सकते हैं, इस त्रुटि के कारण हुई थी ऐप पैकेज से कुछ जो प्रमाण पत्र में मेल नहीं खाता है। आपको यह सुनिश्चित करने की ज़रूरत है कि पैकेज का नाम और SHA1 मेल खाना चाहिए। एक डीवी मशीन पर चल रहे डीबग संस्करण में रिलीज संस्करण के अलग पैकेज नाम और SHA1 हो सकते हैं। – Hong

उत्तर

2

Here आप त्रुटि के लिए जानकारी है प्राप्त कर रहे हैं मुझे लगता है कि आप हैं, लेकिन ड्राइव तक पहुंचने के लिए आपको साइन इन होना होगा। जब मैं नमूना ऐप चलाता हूं, बहुत शुरुआत में यह मुझे खाता चुनने के लिए कहता है। शायद आपके पास उपयोग किए जा रहे डिवाइस से समन्वयित खाता नहीं है? "खाता जोड़ें" का एक विकल्प है, लेकिन जब आपके पास शून्य खाते हैं तो व्यवहार भिन्न होता है। प्रलेखन से पता चलता है कि आप या तो एपीआई का उपयोग किए बिना जारी रखते हैं (बस क्योंकि आप साइन इन नहीं कर सकते हैं) या उपयोगकर्ता को साइन इन करने के लिए startResolutionForResult(Activity, int) पर कॉल करें, लेकिन यह शायद add the account to your device के लिए सबसे आसान होगा।

+0

अजीब, मेरे कोड में कुछ भी बदले बिना यह मेरे सोनी टैबलेट पर काम करता है लेकिन सैमसंग ओ.ओ – cham

+0

पर नहीं, क्या आप एक ही खाते के साथ दोनों डिवाइसों में साइन इन हैं? – Andy

+0

हाँ उसी खाते के साथ – cham

0

सुनिश्चित नहीं है कि किसी को अभी भी इसकी आवश्यकता है, लेकिन मेरे मामले में मेरे पास दो Google खाते थे इसलिए मुझे पहले यह चुनने की आवश्यकता है कि मैं किस खाते का उपयोग करना चाहता हूं। मैं onConnectionFailed

if (!connectionResult.hasResolution()) 
    { 
     // show the localized error dialog. 
     GooglePlayServicesUtil.getErrorDialog(connectionResult.getErrorCode(), mContext, 0).show(); 
     return; 
    } 

    try 
    { 
     connectionResult.startResolutionForResult(mContext, 1); 
    } catch (IntentSender.SendIntentException e) 
    { 
     e.printStackTrace(); 
    } 
3

में इस कोड का इस्तेमाल किया यह (के रूप में यह मेरे साथ हुआ) डेवलपर की ओर से लापरवाही की वजह से हो सकता है - SHA1 विवरण आप कंसोल पर प्रदान करते हैं कि उत्पादन कुंजी और आप डीबग पर परीक्षण कर रहे हैं कर रहे हैं मोड (SHA1 विवरण अलग होंगे)। त्रुटि संदेश गूगल ड्राइव एपीआई, हालांकि बेहतर हो सकता है, हालांकि!

1

तुम मेरे इस सवाल का जवाब यहाँ https://stackoverflow.com/a/41658044/4448757 उल्लेख Google खाते से कनेक्ट करने के लिए कर सकते हैं, इस पूरी तरह से केवल हस्ताक्षर किए apk में काम करता है

तो बाद आप ड्राइव

IntentSender intentSender = Drive.DriveApi 
      .newOpenFileActivityBuilder() 
      .build(mGoogleApiClient); 
    try { 
     startIntentSenderForResult(intentSender, DRIVE_CHOOSER_REQUEST, null, 0, 0, 0); 
    } catch (IntentSender.SendIntentException e) { 
     e.printStackTrace(); 
    } 
संबंधित मुद्दे