title: Subscribing topics with Google Cloud Messenger token, Invalid argument received
body: <p>I am following the example that google provides to register the gcm token:
  <a href="https://developers.google.com/cloud-messaging/android/start">https://developers.google.com/cloud-messaging/android/start</a></p>
  
  <p>I have generated correctly the google-services.json file and I am able to receive the push tokens. But when I am trying to subscribe to any topic with the follow code:</p>
  
  <pre><code>    // Register the user to the global topic. This will help the device to be register on GCM
      GcmPubSub pubSub = GcmPubSub.getInstance(this);
      pubSub.subscribe(token, "/topics/global", null);
  </code></pre>
  
  <p>It throws the INVALID_ARGUMENT exception:</p>
  
  <pre><code>01-05 14:05:24.435 D/RegIntentService( 4330): java.io.IOException: INVALID_PARAMETERS
  01-05 14:05:24.435 D/RegIntentService( 4330):   at com.google.android.gms.iid.zzc.zzb(Unknown Source)
  01-05 14:05:24.435 D/RegIntentService( 4330):   at com.google.android.gms.iid.zzc.zza(Unknown Source)
  01-05 14:05:24.435 D/RegIntentService( 4330):   at com.google.android.gms.iid.InstanceID.zzc(Unknown Source)
  01-05 14:05:24.435 D/RegIntentService( 4330):   at com.google.android.gms.iid.InstanceID.getToken(Unknown Source)
  01-05 14:05:24.435 D/RegIntentService( 4330):   at com.google.android.gms.gcm.GcmPubSub.subscribe(Unknown Source)
  01-05 14:05:24.435 D/RegIntentService( 4330):   at gcm.play.android.samples.com.gcmquickstart.RegistrationIntentService.subscribeTopics(RegistrationIntentService.java:105)
  01-05 14:05:24.435 D/RegIntentService( 4330):   at gcm.play.android.samples.com.gcmquickstart.RegistrationIntentService.onHandleIntent(RegistrationIntentService.java:65)
  01-05 14:05:24.435 D/RegIntentService( 4330):   at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
  01-05 14:05:24.435 D/RegIntentService( 4330):   at android.os.Handler.dispatchMessage(Handler.java:99)
  01-05 14:05:24.435 D/RegIntentService( 4330):   at android.os.Looper.loop(Looper.java:137)
  01-05 14:05:24.435 D/RegIntentService( 4330):   at android.os.HandlerThread.run(HandlerThread.java:60)
  </code></pre>
  
  <p>This is an example of push tokens that I receives:</p>
  
  <pre><code>e3r6xnFGK3E:APA91bG9oY0A7QCf86BXXh8ADzycct5QJUONTXMH3pApCkcwty0A6UXo6zLLx3Hl3ubMgBY65ldxuZzSF20nahZAq-4SiUMRS0YYStJtldK85lzrO-xM5KvM_Jigpaka-RN5TLb8D1Op
  </code></pre>
  
  <p>I have checked the documentation about subscribe a topic but there is nothing that says why I am receiving INVALID_PARAMETER exception:</p>
  
  <p><a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmPubSub.html#subscribe(java.lang.String,%20java.lang.String,%20android.os.Bundle)">https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmPubSub.html#subscribe(java.lang.String, java.lang.String, android.os.Bundle)</a></p>
  
  <p>Any help is appreciated.</p>
  
  <p>P.d. There is the complete source code to register the tokens:</p>
  
  <pre><code>import android.annotation.SuppressLint;
  import android.app.IntentService;
  import android.content.Intent;
  import android.os.Bundle;
  import android.os.ResultReceiver;
  import android.util.Log;
  
  import com.google.android.gms.gcm.GcmPubSub;
  import com.google.android.gms.gcm.GoogleCloudMessaging;
  import com.google.android.gms.iid.InstanceID;
  
  
  /**
   * Intent service used to retrieve and save the registration token needed
   * Extracted from here
   * https://github.com/googlesamples/google-services/blob/master/android/gcm/app/src/main/java/gcm/play/android/samples/com/gcmquickstart/RegistrationIntentService.java
   */
  public class RegistrationIntentService extends IntentService {
  
      public static final String TAG = "RegistrationIntentService";
      public static final String INTENT_KEY_UPDATE_SERVER_TOKEN_CALLBACK =
              "services.RegistrationIntentService.INTENT_KEY_UPDATE_SERVER_TOKEN_CALLBACK";
  
      private ResultReceiver mResultReceiver;
      public static final String BUNDLE_KEY_GCM_TOKEN =
              "services.RegistrationIntentService.BUNDLE_KEY_GCM_TOKEN";
  
      public RegistrationIntentService() {
          super(TAG);
      }
  
      @SuppressLint("LongLogTag")
      @Override
      protected void onHandleIntent(Intent intent) {
          // Get the result receiver
          Bundle extras = intent.getExtras();
          if (extras != null &amp;&amp; extras.containsKey(INTENT_KEY_UPDATE_SERVER_TOKEN_CALLBACK)) {
              mResultReceiver = (ResultReceiver)extras.get(INTENT_KEY_UPDATE_SERVER_TOKEN_CALLBACK);
          }
  
          try {
              InstanceID instanceId = InstanceID.getInstance(this);
              String token = instanceId.getToken(getString(R.string.gcm_defaultSenderId),
                      GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
              Log.i(TAG, "GCM Registration Token: " + token);
  
              // TODO: Send registration token to the server
              if (mResultReceiver != null) {
                  Bundle bundle = new Bundle();
                  bundle.putString(BUNDLE_KEY_GCM_TOKEN, token);
                  mResultReceiver.send(0, bundle);
              }
  
              // Register the user to the global topic. This will help the device to be register on GCM
              GcmPubSub pubSub = GcmPubSub.getInstance(this);
              pubSub.subscribe(token, "/topics/global", null);
              Logger.v(TAG, "User correctly register to the global token");
  
          } catch (Exception e) {
              Log.d(TAG, "Faield to complete token refresh", e);
          }
      }
  }
  </code></pre>
  
  <p>And this is the content of the google-services.json</p>
  
  <pre><code>{
    "project_info": {
      "project_id": "NOT_SHOWN-aa10f",
      "project_number": "11046079110",
      "name": "NOT_SHOWN"
    },
    "client": [
      {
        "client_info": {
          "mobilesdk_app_id": "1:11046079110:android:b918cc51ed907631",
          "client_id": "android:NOT_SHOWN",
          "client_type": 1,
          "android_client_info": {
            "package_name": "NOT_SHOWN"
          }
        },
        "oauth_client": [],
        "api_key": [],
        "services": {
          "analytics_service": {
            "status": 1
          },
          "cloud_messaging_service": {
            "status": 2,
            "apns_config": []
          },
          "appinvite_service": {
            "status": 1,
            "other_platform_oauth_client": []
          },
          "google_signin_service": {
            "status": 1
          },
          "ads_service": {
            "status": 1
          }
        }
      }
    ],
    "client_info": [],
    "ARTIFACT_VERSION": "1"
  }
  </code></pre>