Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Spotify API:应用程序ID无效_Android_Spotify_Libspotify - Fatal编程技术网

Android Spotify API:应用程序ID无效

Android Spotify API:应用程序ID无效,android,spotify,libspotify,Android,Spotify,Libspotify,我目前正在开发一款android应用程序,该应用程序正在实现Spotify API。我已经使用教程将我的应用程序连接到spotify的所有代码,并且已经在我的应用程序上工作了一段时间。当我在验证用户身份后通过我的应用程序播放歌曲时,它可以在我的模拟器上完美地工作。当我将它切换到手机时,它无法工作,并在android响应中给了我一个无效的应用程序ID错误。当我从手机上卸载spotify,然后尝试通过我的应用程序登录spotify时,我就可以在手机上播放音乐而不会出现任何崩溃。所以我的问题是如何解决

我目前正在开发一款android应用程序,该应用程序正在实现Spotify API。我已经使用教程将我的应用程序连接到spotify的所有代码,并且已经在我的应用程序上工作了一段时间。当我在验证用户身份后通过我的应用程序播放歌曲时,它可以在我的模拟器上完美地工作。当我将它切换到手机时,它无法工作,并在android响应中给了我一个无效的应用程序ID错误。当我从手机上卸载spotify,然后尝试通过我的应用程序登录spotify时,我就可以在手机上播放音乐而不会出现任何崩溃。所以我的问题是如何解决这个问题?以下是我对用户进行身份验证的代码:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);

        // Check if result comes from the correct activity
        if (requestCode == requestcode) {
            AuthenticationResponse response = AuthenticationClient.getResponse(resultCode, intent);
            if (response.getType() == AuthenticationResponse.Type.TOKEN) {
                Config playerConfig = new Config(this, response.getAccessToken(), client_id);
                token = response.getAccessToken();
                Spotify.getPlayer(playerConfig, this, new Player.InitializationObserver() {
                    @Override
                    public void onInitialized(Player player) {
                        mPlayer = player;
                        mPlayer.addConnectionStateCallback(.this);
                        mPlayer.addPlayerNotificationCallback(.this);

                    }

                    @Override
                    public void onError(Throwable throwable) {
                        Log.e("MainActivity", "Could not initialize player: " + throwable.getMessage());
                    }
                });
            }
        }
    }

您需要转到Spotify开发者设置并更新

安卓软件包

提供您的完整软件包名称,即
com.company.app
以及相应构建变体的SHA1指纹

您可以通过运行来获取指纹

./gradlew signingReport
您可以在那里找到调试的结果,例如
debug

Variant: debug
Config: debug
Store: /Users/<your username>/.android/debug.keystore
Alias: AndroidDebugKey
MD5:  00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
SHA1: 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
Valid until: Monday, August 29, 2046
变量:调试
配置:调试
Store:/Users//.android/debug.keystore
别名:AndroidDebugKey
MD5:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
SHA1:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
有效期至:2046年8月29日星期一

保存Spotify应用程序页面上的设置足以刷新系统,以便您可以从设备登录。

Spotify在开发过程中需要调试SHA1。发布应用程序后,需要添加应用程序的版本SHA1,以及AndroidManifest中显示的包名。通过Spotify的仪表板在“Android软件包”部分为您的应用添加此功能

要了解发布APK的SHA1,首先需要在Android Studio中创建一个

然后确保将以下内容添加到应用程序的
build.gradle

android {
    //...
    signingConfigs {
        release {
            storeFile file('KEY_STORE_PATH_FOR_YOUR_APK')
            storePassword 'YOUR_PW'
            keyAlias 'YOUR_KEY_ALIAS'
            keyPassword 'YOUR_KEY_PW'
        }
    }
    buildTypes {
        //...
        release {
            signingConfig signingConfigs.release
        }
    }
    //...
}
这将允许您将发布和调试SHA1打印到您的Logcat中。在Android Studio中打开Gradle终端,并将
signingReport
设置为命令行参数。单击
OK
,值将被打印出来

为什么需要这样做


如果用户已安装Spotify应用程序并已登录,则无需再次登录您的应用程序。这将在后台使用需要SHA1的OAuth自动完成。如果未安装Spotify应用程序,则不需要SHA1,系统会提示用户登录您的应用程序。但是,如果用户安装了Spotify应用程序,则无法在应用程序中显示登录提示。。。因此,如果SHA1不可用,登录将失败。

上述答案非常有用。然而,这是另一个让我抓狂的问题

作为发布管理流程的一部分,play store提供了管理发布密钥的功能。如果启用此功能,应用程序的SHA-1证书将在交付给用户之前被替换。您需要确保新密钥也已在spotify开发者控制台上注册


要查看新密钥,请打开google play store developers仪表板,然后单击“发布管理>应用程序签名”。您应该可以在此处查看密钥

这正是发生在我身上的事情。我会尽量按照指示把结果贴出来