0

Я пытаюсь подключить свое приложение к сервисам Google Play, но, как я могу проверить, кажется, что он не подключается должным образом. Когда я нажимаю кнопку, которая проверяет, подключена ли она, она возвращает меня, которая не подключена. Однако приложение обращается к сервисам Google Play и позволяет проверить, какую учетную запись электронной почты использовать.Службы Google Play не удается подключиться

Вот код:

public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, 
    GoogleApiClient.OnConnectionFailedListener { 

/** 
* ATTENTION: This was auto-generated to implement the App Indexing API. 
* See https://g.co/AppIndexing/AndroidStudio for more information. 
*/ 
private GoogleApiClient client; 
//GoogleApiClient 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    client = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(Games.API).addScope(Games.SCOPE_GAMES) 
      .build(); 
    Button button = (Button) findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      //Games.signOut(client); 
      TextView textView = (TextView) findViewById(R.id.helloworld); 
      //client.connect(); 
      if(client.isConnected()){ 
       textView.setText("Buttonconnected"); 

      }else{ 

       textView.setText("Buttonnotconnected"); 
      } 
     } 
    }); 


    if (client == null) { 

    } 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    //Log.i("app","Lapp"); 
    if (client.isConnected()) { 
     //TextView t = (TextView) findViewById(R.id.helloworld); 
     //t.setText("Connected"); 
    } 
    /* GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance(); 
    int resultCode = googleApiAvailability.isGooglePlayServicesAvailable(this); 
    if (resultCode == ConnectionResult.SUCCESS) { 
     Toast.makeText(this, "Google Play Works!!", Toast.LENGTH_LONG).show(); 
    } else{ 
     Toast.makeText(this, "Google Play Services required!!", Toast.LENGTH_LONG).show(); 
    }*/ 
    if (client != null) { 
     client.connect(); 
    } 

    if (client.isConnected()) { 
     TextView t = (TextView) findViewById(R.id.helloworld); 
     t.setText("Connected"); 
    } 

} 

@Override 
public void onStop() { 
    super.onStop(); 

} 

public void onConnectionSuspended(int cause) { 
    // We are not connected anymore! 
    Log.i("app", "connectionsuspended"); 
} 

public void onConnected(Bundle connectionHint) { 

} 

@Override 
public void onConnectionFailed(ConnectionResult result) { 
    // We tried to connect but failed! 
    TextView t; 
    //  t = (TextView) findViewById(R.id.helloworld); 
      //  t.setText("Failed"); 


    try { 
     //result.startResolutionForResult(this, 49404); 
     result.startResolutionForResult(this, 1001); 
     Log.i("app", "show"); 
    } catch (Exception e) { 
     Log.i("app", e.toString()); 
    } 


    client.connect(); 
    client.hashCode(); 
    Toast.makeText(this, "Toasting", Toast.LENGTH_LONG).show(); 
    if (client.isConnected()) { 
     Log.i("app", "worked"); 
     t = (TextView) findViewById(R.id.helloworld); 
     t.setText("FailedConnected"); 
    } 
    if (client.isConnecting()) { 
     t = (TextView) findViewById(R.id.helloworld); 
     t.setText("Connecting"); 
     Log.i("app", "Failedtryingtoconnect"); 

    } 


} 

} 

Это мой build.gradle:

....

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:24.0.0' 
compile 'com.google.android.gms:play-services:9.0.2' 
} 

и это мой Manifest.xml

. ...

<meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" /> 
    <meta-data android:name="com.google.android.gms.games.APP_ID" 
     android:value="@string/app_id" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.USE_CREDENTIALS" /> 

...

Я что-то упустил? Я использую для этого тестирования ту же учетную запись, что и в Google Developers Console. Мне не хватает регистрации OAuth2?

ответ

2

Да, я думаю, вам не хватает идентификатора OAuth2 для аутентификации. Из документации:

Ваша игра должна иметь OAuth 2.0 идентификатор клиента для того, чтобы быть проверку подлинности и авторизацию, чтобы вызвать Google Play игры услуг. Чтобы настроить связь между идентификатором клиента и вашей игрой, используйте консоль разработчика Google Play для создания идентификатора клиента и привяжите его к вашей игре.

https://developers.google.com/games/services/console/enabling

+1

О, я думал, что идентификатор для моего приложения - это номер рядом с именем приложения. Я попытаюсь создать правильный токен OAuth2 и попробую еще раз, спасибо, – NUN

0

Я решил это в 2-х часов, но я забыл ответить. Да, я попробовал решение, и оно сработало. Я создал ключ SHA-1, используя ссылку: How can I find and run the keytool. Я также использовал в консоли Google Developer то же имя пакета, что и мой проект, и подключился к сервисам Google Play, используя ту же учетную запись google, что и в консоли разработчика. Так хорошо работает;)

Смежные вопросы