Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Toast : Internal Error Occur with integration of Google Plus in Android

I am integrating the Google Plus in my Android app. I have created the project in the Google API Console. I created the OAuth Client ID and I doubled check the package name and Keystore SHA1 but both are correct but I am still getting the Internal Error Occur.

I have seen many threads but mostly saying the related to SHA1 and package name which is correct here.

Guys share your views.


Edit : I have tested using the debug.keystore and custom created keystore but nothing worked for me.

setScopes("PLUS_LOGIN") also not helpful for me.


public class MainActivity extends Activity implements ConnectionCallbacks,
        OnConnectionFailedListener, OnClickListener {

    private static final int REQUEST_CODE_RESOLVE_ERR = 9000;

    private ProgressDialog mConnectionProgressDialog;
    private PlusClient mPlusClient;
    private ConnectionResult mConnectionResult;

    private static final String TAG = "Google Plus Demo";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mPlusClient = new PlusClient.Builder(this, this, this)
                .setActions("http://schemas.google.com/AddActivity",
                        "http://schemas.google.com/BuyActivity")
                .setScopes(Scopes.PLUS_LOGIN).build();

        // Progress Bar to be displayed if the connection failure is not
        // resolved.
        mConnectionProgressDialog = new ProgressDialog(this);
        mConnectionProgressDialog.setMessage("Signing in...");

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

    }

    @Override
    protected void onStart() {
        super.onStart();
        mPlusClient.connect();
    }

    @Override
    protected void onStop() {
        super.onStop();
        mPlusClient.disconnect();
    }

    @Override
    protected void onActivityResult(int requestCode, int responseCode, Intent intent) {
        if(requestCode == REQUEST_CODE_RESOLVE_ERR && responseCode == RESULT_OK) {
            mConnectionResult = null;
            mPlusClient.connect();
        }
    }

    @Override
    public void onConnectionFailed(ConnectionResult result) {
        if(mConnectionProgressDialog.isShowing()) {
            // The user clicked on the sign-in button already. Start to resolve
            // connection errors. Wait until onConnected() to dismiss the 
            // connection dialog.

            if(result.hasResolution()) {
                try {
                    result.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR);
                } catch(SendIntentException e) {
                    mPlusClient.connect();
                }
            }
        }

        // Save the result
        mConnectionResult = result;
    }

    @Override
    public void onConnected(Bundle connectionHint) {
        String accountName = mPlusClient.getAccountName();
        Toast.makeText(this, accountName, Toast.LENGTH_LONG).show();
        mConnectionProgressDialog.dismiss();
    }

    @Override
    public void onDisconnected() {
        Log.d(TAG, "Disconnected");
    }

    @Override
    public void onClick(View view) {
        if(view.getId() == R.id.sign_in_button && !mPlusClient.isConnected()) {
            if(mConnectionResult == null) {
                mConnectionProgressDialog.show();
            } else {
                try {
                    mConnectionResult.startResolutionForResult(this, REQUEST_CODE_RESOLVE_ERR);
                } catch(SendIntentException e) {
                    // Try connecting again
                    mConnectionResult = null;
                    mPlusClient.connect();
                }
            }
        }
    }
}

Logs

01-27 20:22:23.871: I/GLSUser(1699): GLS error: INVALID_SCOPE [email protected] oauth2:PLUS_LOGIN
01-27 20:22:23.871: W/GLSActivity(1699): [aia] Status from wire: INVALID_SCOPE status: INVALID_SCOPE
01-27 20:22:23.965: W/InputManagerService(1536): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@4076b580
01-27 20:22:24.020: I/eFrame(3180): pkgname_before:com.google.android.gms  class:com.xicom.appdemo.MainActivity
01-27 20:22:24.027: D/SurfaceFlinger(1536): Layer[34bee8]:: Tile format buffer w[256] h[64] f[1] v[0x47855000] p[0x97fd5000] sz[65536]
01-27 20:22:25.012: V/AudioFlinger(1323): Audio hardware entering standby, mixer 0x6f228, mSuspended 0
01-27 20:22:25.012: D/AudioStreamOutALSA(1323): AudioStreamOutALSA::standby--pause
01-27 20:22:25.106: V/AudioFlinger(1323): MixerThread 0x6f228 TID 1473 going to sleep
01-27 20:22:27.684: W/PowerManagerService(1536): Timer 0x3->0x3|0x3
01-27 20:22:27.691: D/BatteryService(1536): update start

Code :

mPlusClient = new PlusClient.Builder(this, this, this)
    .setActions("http://schemas.google.com/AddActivity",
            "http://schemas.google.com/BuyActivity")
    .build();

Log second version

01-28 22:25:16.164: D/SurfaceFlinger(1536): Layer[37c9c0]:: Tile format buffer w[256] h[320] f[1] v[0x4ac99000] p[0x94741000] sz[327680]
01-28 22:25:17.007: D/SurfaceFlinger(1536): Layer[8a5a68] [4] non-RGB565 reloads
01-28 22:25:17.250: I/fno(2652): I/O exception (javax.net.ssl.SSLException) caught when processing request: Write error: ssl=0x25d728: I/O error during system call, Broken pipe
01-28 22:25:17.250: I/fno(2652): Retrying request
01-28 22:25:18.015: D/SurfaceFlinger(1536): Layer[8a5a68] [10] non-RGB565 reloads
01-28 22:25:18.101: V/AudioFlinger(1323): Audio hardware entering standby, mixer 0x6f228, mSuspended 0
01-28 22:25:18.101: D/AudioStreamOutALSA(1323): AudioStreamOutALSA::standby--pause
01-28 22:25:18.187: D/BatteryService(1536): update start
01-28 22:25:18.195: V/AudioFlinger(1323): MixerThread 0x6f228 TID 1473 going to sleep
01-28 22:25:19.015: D/SurfaceFlinger(1536): Layer[8a5a68] [10] non-RGB565 reloads
01-28 22:25:19.484: W/GLSActivity(2652): [aia] Status from wire: INVALID_CLIENT_ID status: null
01-28 22:25:19.484: W/GLSActivity(2652): [aia] Status from wire: INVALID_CLIENT_ID status: null
01-28 22:25:19.484: I/GLSUser(2652): GLS error: INVALID_CLIENT_ID [email protected] oauth2:https://www.googleapis.com/auth/plus.login
01-28 22:25:19.484: W/GLSActivity(2652): [aia] Status from wire: Unknown status: UNKNOWN
01-28 22:25:19.570: D/dalvikvm(20673): GC_EXTERNAL_ALLOC freed 163K, 43% free 3397K/5959K, external 511K/517K, paused 47ms
01-28 22:25:19.664: W/InputManagerService(1536): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@40605c00
01-28 22:25:19.781: D/SurfaceFlinger(1536): Layer[278dc0]:: Tile format buffer w[256] h[64] f[1] v[0x49520000] p[0x97fcc000] sz[65536]
01-28 22:25:19.835: I/eFrame(20257): pkgname_before:com.google.android.gms  class:com.xicom.appdemo.MainActivity
01-28 22:25:20.046: D/dalvikvm(20257): GC_CONCURRENT freed 384K, 49% free 3021K/5895K, external 412K/517K, paused 4ms+6ms
01-28 22:25:20.757: W/PowerManagerService(1536): Timer 0x3->0x3|0x3
01-28 22:25:23.203: D/BatteryService(1536): update start
like image 216
android Avatar asked Jan 26 '14 08:01

android


2 Answers

I had the same problem, and I solved it looking around in the Developer Console.

Turns out that you need to fill in the necessary information about your project for the consent screen.

Solution:

  • go to your Developer Console
  • APIs & Auth
  • Consent Screen

Choose your email and insert your project name. Next time you launch your application you will have the proper consent screen and thereafter all will work fine.

like image 133
Stephan Avatar answered Oct 21 '22 04:10

Stephan


Do you get any output in logcat to go with the error? Try enabling verbose logging if you haven't (see https://developers.google.com/+/mobile/android/getting-started#frequently_asked_questions)

adb shell setprop log.tag.GooglePlusPlatform VERBOSE

Edit: Thanks for adding the logs. The GLS error is the interesting one there:

I/GLSUser(1699): GLS error: INVALID_SCOPE [email protected] oauth2:PLUS_LOGIN

Can you check that you have enabled the Google+ API in your API console project, and can you also try removing the setScopes line entirely (PLUS_LOGIN will be the default, so that seems the easiest way to test if anything interesting is going on).

I'm not sure off the top of my head whether PLUS_LOGIN being in their is indicative of a replace not happening, or its just the logging looks like that, but remove the line should remove it from the equation.

EDIT - based on your updated dump the scope now looks good but there is an invalid client Id error in there. Make sure there aren't any trailing spaces around your sha 1 in the client Id and that the package name exactly matches. Also try clearing the cache in google play service (clear data from the menu in the google settings app).

like image 45
Ian Barber Avatar answered Oct 21 '22 04:10

Ian Barber