android 空页面 错误页面,ms oauth2在android空白页面登录webview-如果我中断配置,它将在webview中显示错误并工作...

我有一个nativescript项目,正在尝试使用oauth2.0登录。现在在ios上,一切正常。在android中,每当我单击login时,webview都是空白的白色,控制台上也没有任何错误。

如果我复制粘贴用于授权和

把它放在我桌面的浏览器上——一切都很好,而且工作正常

如果我通过删除“scopes”或对redirecturi进行胡言乱语来中断请求的配置,则webview将显示microsoft页面,并显示中断内容的错误。

在Nexus 5+像素XL2上尝试了Pie和Oreo

将chrome/webview更新为最新版本

按照nativescript-oauth2插件指南为android和ios实现了自定义uri模式。

测试了webview以确保它能与其他站点一起工作

我已经试了三天多了,几乎都是这样的:(

方案的应用程序内清单:

android:name="com.tns.NativeScriptActivity"

android:label="@string/title_activity_kimera"

android:configChanges="keyboardHidden|orientation|screenSize"

android:theme="@style/LaunchScreenTheme">

android:scheme="msala1ea6c64-3d77-4f2b-9baf-1cf72da2d376"/>

当然还有“android:launchmode=”singletask“>”`

OAuth2配置:

`openIdSupport: 'oid-full',

clientId: 'a1ea6c64-3d77-4f2b-9baf-1cf72da2d376',

redirectUri: 'msala1ea6c64-3d77-4f2b-9baf-1cf72da2d376://auth',

urlScheme: 'msala1ea6c64-3d77-4f2b-9baf-1cf72da2d376',

scopes: ['openid', 'https://outlook.office.com/mail.read']`

msala1ea6c64-3d77-4f2b-9baf-1cf72da2d376://auth

在azure中注册为重定向uri

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在ThinkPHP6使用League/oauth2-server,您需要遵循以下步骤: 1. 安装League/oauth2-server 使用composer安装League/oauth2-server: ``` composer require league/oauth2-server ``` 2. 配置数据库 在config/database.php文件配置数据库连接信息。 3. 创建授权服务器类 创建一个授权服务器类,并实现League\OAuth2\Server\AuthorizationServerInterface接口。在授权服务器类,您需要实现以下方法: - getClientEntity($clientIdentifier, $grantType, $clientSecret = null, $mustValidateSecret = true):获取客户端实体。 - getAccessToken($accessToken):获取访问令牌实体。 - validateAuthorizationRequest(ServerRequestInterface $request):验证授权请求。 - completeAuthorizationRequest(AuthorizationRequest $authorizationRequest, ResponseInterface $response):完成授权请求。 - respondToAccessTokenRequest(ServerRequestInterface $request, ResponseInterface $response):响应访问令牌请求。 示例代码: ```php use League\OAuth2\Server\AuthorizationServerInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; class AuthorizationServer implements AuthorizationServerInterface { public function getClientEntity($clientIdentifier, $grantType, $clientSecret = null, $mustValidateSecret = true) { // TODO: 实现获取客户端实体的逻辑 } public function getAccessToken($accessToken) { // TODO: 实现获取访问令牌实体的逻辑 } public function validateAuthorizationRequest(ServerRequestInterface $request) { // TODO: 实现验证授权请求的逻辑 } public function completeAuthorizationRequest(AuthorizationRequest $authorizationRequest, ResponseInterface $response) { // TODO: 实现完成授权请求的逻辑 } public function respondToAccessTokenRequest(ServerRequestInterface $request, ResponseInterface $response) { // TODO: 实现响应访问令牌请求的逻辑 } } ``` 4. 创建授权服务器 在控制器创建授权服务器: ```php use League\OAuth2\Server\AuthorizationServer; class AuthController extends Controller { public function authorize(AuthorizationServer $server) { // TODO: 实现授权请求的逻辑 } public function accessToken(AuthorizationServer $server) { // TODO: 实现获取访问令牌的逻辑 } } ``` 5. 配置路由 在路由配置文件,将authorize和accessToken方法映射到控制器的路由上: ```php use think\facade\Route; use App\Controller\AuthController; Route::get('authorize', [AuthController::class, 'authorize']); Route::post('access_token', [AuthController::class, 'accessToken']); ``` 6. 实现授权请求逻辑 在控制器的authorize方法,实现授权请求的逻辑。您需要使用AuthorizationServerInterface的validateAuthorizationRequest方法验证授权请求,并根据授权请求的参数生成授权页面。 示例代码: ```php use League\OAuth2\Server\AuthorizationServerInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; class AuthController extends Controller { public function authorize(AuthorizationServerInterface $server, ServerRequestInterface $request, ResponseInterface $response) { try { // 验证授权请求 $authorizationRequest = $server->validateAuthorizationRequest($request); // 生成授权页面 return $this->fetch('authorize', [ 'client_id' => $authorizationRequest->getClient()->getIdentifier(), 'scopes' => $authorizationRequest->getScopes(), ]); } catch (OAuthServerException $e) { return $e->generateHttpResponse($response); } catch (\Exception $e) { return $response->withStatus(500)->withHeader('Content-Type', 'text/plain')->write($e->getMessage()); } } } ``` 7. 实现获取访问令牌逻辑 在控制器的accessToken方法,实现获取访问令牌的逻辑。您需要使用AuthorizationServerInterface的respondToAccessTokenRequest方法响应访问令牌请求,并返回访问令牌实体。 示例代码: ```php use League\OAuth2\Server\AuthorizationServerInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; class AuthController extends Controller { public function accessToken(AuthorizationServerInterface $server, ServerRequestInterface $request, ResponseInterface $response) { try { // 响应访问令牌请求 $accessTokenResponse = $server->respondToAccessTokenRequest($request, $response); // 返回访问令牌实体 return $accessTokenResponse; } catch (OAuthServerException $e) { return $e->generateHttpResponse($response); } catch (\Exception $e) { return $response->withStatus(500)->withHeader('Content-Type', 'text/plain')->write($e->getMessage()); } } } ``` 现在,您已经成功在ThinkPHP6使用League/oauth2-server实现了OAuth2授权服务器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值