Flutter Spotify Api Аутентификация - PullRequest
0 голосов
/ 06 марта 2020

Мне нужно аутентифицировать пользователя в моем приложении Flutter, которое использует API Spotify. Я использую flutter_web_auth, чтобы открыть WebView и позволить пользователю войти в систему. Я не могу сделать это, чтобы вернуться в приложение.

В Spotify Dashboard у меня установлен обратный вызов Uri: https://spotifydata.com/callback

      final callbackUrl = "https://spotifydata.com/callback";

      void _authenticateSpotfy() async {
        final url = Uri.https('accounts.spotify.com', '/authorize', {
        'response_type': 'code',
        'client_id': clientID,
        'redirect_uri': 'https://spotifydata.com/callback:/',
        'scope': 'user-read-private user-read-email',
    });


    final result = await FlutterWebAuth.authenticate(
        url: url.toString(), callbackUrlScheme: callbackUrl);
  }

AndroidManifest. xml

<activity android:name="com.linusu.flutter_web_auth.CallbackActivity" >
    <intent-filter android:label="flutter_web_auth">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="https://spotifydata.com/callback" />
    </intent-filter>
</activity>

У меня есть попробовал другие ответы на стеке, но они не работают.

1 Ответ

0 голосов
/ 06 марта 2020

Вы можете использовать пакет https://pub.dev/packages/spotify_sdk для аутентификации пользователя
пример https://github.com/brim-borium/spotify_sdk/tree/develop/example
пример команды, такой как

await SpotifySdk.connectToSpotifyRemote(clientId: "", redirectUrl: "")
var authenticationToken = await SpotifySdk.getAuthenticationToken(clientId: "", redirectUrl: "");

фрагмент кода

FlatButton(
                  child: Text("get auth token "),
                  onPressed: () => getAuthenticationToken(),
                ),
...                 
Future<void> getAuthenticationToken() async {
    try {
      var authenticationToken = await SpotifySdk.getAuthenticationToken(
          clientId: "", redirectUrl: "");
      setStatus("Got a token: $authenticationToken");
    } on PlatformException catch (e) {
      setStatus(e.code, message: e.message);
    } on MissingPluginException {
      setStatus("not implemented");
    }
  }
...