如何使用laravel 5.7中的改型发送api从android创建passport令牌,还有比passport更好的身份验证选项吗
Android改造应该创建passport令牌并发送到laravel rest api,还应该添加到数据库中。在laravel5.7和android中有比passport更好的选项吗?你不能在android中创建令牌,你只需要在RegisterController中发送你的信息如何使用laravel 5.7中的改型发送api从android创建passport令牌,还有比passport更好的身份验证选项吗,android,laravel,retrofit,laravel-passport,Android,Laravel,Retrofit,Laravel Passport,Android改造应该创建passport令牌并发送到laravel rest api,还应该添加到数据库中。在laravel5.7和android中有比passport更好的选项吗?你不能在android中创建令牌,你只需要在RegisterController中发送你的信息 $this->validator($request->all())->validate(); event(new Registered($user = $this->create($
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all())));
$client = Client::where('password_client', 1)->first();
$request->request->add([
'grant_type' => 'password',
'client_id' => $client->id,
'client_secret' => $client->secret,
'username' => $request->all()['email'],
'password' => $request->all()['password'],
'scope' => null,
]);
// Fire off the internal request.
$token = Request::create(
'oauth/token',
'POST'
);
return \Route::dispatch($token);
然后,它将返回到您的访问\u令牌
和过期时间
在android中,您需要将令牌保存在SharedReferences中
public class TokenManager {
private SharedPreferences prefs;
private SharedPreferences.Editor editor;
private static TokenManager INSTANCE = null;
private TokenManager(SharedPreferences prefs){
this.prefs = prefs;
this.editor = prefs.edit();
}
public static synchronized TokenManager getInstance(SharedPreferences prefs){
if(INSTANCE == null){
INSTANCE = new TokenManager(prefs);
}
return INSTANCE;
}
public void saveToken(AccessToken token){
editor.putString("ACCESS_TOKEN", token.getAccess_token()).commit();
editor.putString("REFRESH_TOKEN", token.getRefresh_token()).commit();
}
public void deleteToken(){
editor.remove("ACCESS_TOKEN").commit();
editor.remove("REFRESH_TOKEN").commit();
}
public AccessToken getToken(){
AccessToken token = new AccessToken();
token.setAccess_token(prefs.getString("ACCESS_TOKEN", null));
token.setRefresh_token(prefs.getString("REFRESH_TOKEN", null));
return token;
}
在建筑工人课上
public static <T> T createServiceWithAuth(Class<T> service, final TokenManager tokenManager) {
OkHttpClient newClient = client.newBuilder().addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Request.Builder builder = request.newBuilder();
if (tokenManager.getToken().getAccess_token() != null) {
builder.addHeader("Authorization", "Bearer " + tokenManager.getToken().getAccess_token());
}
request = builder.build();
return chain.proceed(request);
}
}).authenticator(CustomAuthenticator.getInstance(tokenManager)).build();
Retrofit newRetrofit = retrofit.newBuilder().client(newClient).build();
return newRetrofit.create(service);
}
然后检查是否为空
if (tokenManager.getToken().getAccess_token() != null) {
startActivity(new Intent(LoginActivity.this, MenuDrawerProfileActivity.class));
finish();
}
避免启动登录页面。
在改装响应中,请将此
tokenManager.saveToken(response.body());
最后,不要忘记声明AccessToken模型
public class AccessToken {
String token_type;
int expires_in;
String access_token;
String refresh_token;
}
希望它对您有所帮助。您无法在android中创建令牌,您只需在RegisterController中发送您的信息即可
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all())));
$client = Client::where('password_client', 1)->first();
$request->request->add([
'grant_type' => 'password',
'client_id' => $client->id,
'client_secret' => $client->secret,
'username' => $request->all()['email'],
'password' => $request->all()['password'],
'scope' => null,
]);
// Fire off the internal request.
$token = Request::create(
'oauth/token',
'POST'
);
return \Route::dispatch($token);
然后,它将返回到您的访问\u令牌
和过期时间
在android中,您需要将令牌保存在SharedReferences中
public class TokenManager {
private SharedPreferences prefs;
private SharedPreferences.Editor editor;
private static TokenManager INSTANCE = null;
private TokenManager(SharedPreferences prefs){
this.prefs = prefs;
this.editor = prefs.edit();
}
public static synchronized TokenManager getInstance(SharedPreferences prefs){
if(INSTANCE == null){
INSTANCE = new TokenManager(prefs);
}
return INSTANCE;
}
public void saveToken(AccessToken token){
editor.putString("ACCESS_TOKEN", token.getAccess_token()).commit();
editor.putString("REFRESH_TOKEN", token.getRefresh_token()).commit();
}
public void deleteToken(){
editor.remove("ACCESS_TOKEN").commit();
editor.remove("REFRESH_TOKEN").commit();
}
public AccessToken getToken(){
AccessToken token = new AccessToken();
token.setAccess_token(prefs.getString("ACCESS_TOKEN", null));
token.setRefresh_token(prefs.getString("REFRESH_TOKEN", null));
return token;
}
在建筑工人课上
public static <T> T createServiceWithAuth(Class<T> service, final TokenManager tokenManager) {
OkHttpClient newClient = client.newBuilder().addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Request.Builder builder = request.newBuilder();
if (tokenManager.getToken().getAccess_token() != null) {
builder.addHeader("Authorization", "Bearer " + tokenManager.getToken().getAccess_token());
}
request = builder.build();
return chain.proceed(request);
}
}).authenticator(CustomAuthenticator.getInstance(tokenManager)).build();
Retrofit newRetrofit = retrofit.newBuilder().client(newClient).build();
return newRetrofit.create(service);
}
然后检查是否为空
if (tokenManager.getToken().getAccess_token() != null) {
startActivity(new Intent(LoginActivity.this, MenuDrawerProfileActivity.class));
finish();
}
避免启动登录页面。
在改装响应中,请将此
tokenManager.saveToken(response.body());
最后,不要忘记声明AccessToken模型
public class AccessToken {
String token_type;
int expires_in;
String access_token;
String refresh_token;
}
希望对你有帮助