flutter_web_auth 在 Flutter 中授权访问我的数据后,不会从 WebView 重定向到应用程序
flutter_web_auth doesn't redirect from WebView to the app after authorizing the access to my data in Flutter
首先,我正在尝试通过向我的应用程序验证我的帐户来获取授权码。
为此,我使用了这个包 flutter_web_auth.
在实施包页面上描述的所有内容并打开 WebView 以授权我的应用程序访问我的帐户数据后,我没有从 WebView 重定向到该应用程序,这是我对 AndroidManifest.xml
所做的更改和我的代码:
android/app/src/main/AndroidManifest.xml
:
<application
android:label="swiftycompanion"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
( SOME CODE I HIDDEN THAT COME WITH THE INITIAL APP TO SIMPLIFY THE CODE )
</activity>
<activity
android:exported="true"
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="com.example.swiftycompanion://redirect" />
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
这是我的代码:
Future getAccessTokenWithAuthorizationCodeFlow() async {
String url = 'https://api.intra.fr/oauth/authorize'
'?client_id=MY_CLIENT_ID'
'&redirect_uri=com.example.swiftycompanion%3A%2F%2Fredirect'
'&response_type=code';
try {
final String result = await FlutterWebAuth.authenticate(
url: url,
callbackUrlScheme: 'com.example.swiftycompanion://redirect'
);
final String? token = Uri.parse(result).queryParameters['token'];
} catch (e) {
print(e);
}
}
我使用相同的包,因为 android:scheme 只需添加你的包名称,最后不带 ://redirect。
请看下面的例子:
<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="com.example.swifty_companion" />
</intent-filter>
首先,我正在尝试通过向我的应用程序验证我的帐户来获取授权码。
为此,我使用了这个包 flutter_web_auth.
在实施包页面上描述的所有内容并打开 WebView 以授权我的应用程序访问我的帐户数据后,我没有从 WebView 重定向到该应用程序,这是我对 AndroidManifest.xml
所做的更改和我的代码:
android/app/src/main/AndroidManifest.xml
:
<application
android:label="swiftycompanion"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
( SOME CODE I HIDDEN THAT COME WITH THE INITIAL APP TO SIMPLIFY THE CODE )
</activity>
<activity
android:exported="true"
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="com.example.swiftycompanion://redirect" />
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
这是我的代码:
Future getAccessTokenWithAuthorizationCodeFlow() async {
String url = 'https://api.intra.fr/oauth/authorize'
'?client_id=MY_CLIENT_ID'
'&redirect_uri=com.example.swiftycompanion%3A%2F%2Fredirect'
'&response_type=code';
try {
final String result = await FlutterWebAuth.authenticate(
url: url,
callbackUrlScheme: 'com.example.swiftycompanion://redirect'
);
final String? token = Uri.parse(result).queryParameters['token'];
} catch (e) {
print(e);
}
}
我使用相同的包,因为 android:scheme 只需添加你的包名称,最后不带 ://redirect。
请看下面的例子:
<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="com.example.swifty_companion" />
</intent-filter>