gpt4 book ai didi

android - 使用 Android 和 Rest API 了解 OneDrive 中的身份验证流程

转载 作者:行者123 更新时间:2023-11-30 01:44:03 26 4
gpt4 key购买 nike

我尝试从 OneDrive API 实现登录方法,但我不确定我是否正确理解了工作流程。基本上,在第一次启动该应用程序时,我希望同时拥有登录窗口和“授权应用程序...”窗口。但是,当用户再次启动该应用程序时,我想直接连接到应用程序,没有任何窗口。相反,使用以下代码,我一直有第二个窗口(用户决定接受该应用程序的窗口)

@Override
public void signIn() {
//personal code
linkingStarted = true;
signInStatus = SignInStatus.SIGNING_IN;
activity.setUpWait(R.layout.popup_waitgif_white);
//end of personal code

mAuthClient = AuthClientFactory.getAuthClient(activity.getApplication());


if (mAuthClient.getSession().isExpired() && Util.isConnectedToInternet(activity)) {
activity.alertOnUIThread("Login again");
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
mAuthClient.login(activity, SCOPES, mAuthListener);

}
});

} else if (!Util.isConnectedToInternet(activity)) {
activity.alertOnUIThread(activity.getString(R.string.alert_verifyconnection));

} else {
activity.alertOnUIThread("Resigned In OneDrive");
signInStatus = SignInStatus.SIGNED_IN;


mAuthClient.initialize(SCOPES, new AuthListener() {
@Override
public void onAuthComplete(final AuthStatus status, final AuthSession session, final Object userState) {
if (status == AuthStatus.CONNECTED) {

authToken = session.getAccessToken();
oneDriveService = getOneDriveService();

signInStatus = SignInStatus.SIGNED_IN;

} else {
authenticationFailure();
Log.v(TAG, "Problem connecting");
}
}

@Override
public void onAuthError(final AuthException exception, final Object userState) {
//mAuthClient.login(activity, SCOPES, mAuthListener);
}
}, null, authToken);
}


}

AuthClientFactory 就是这样的:

public class AuthClientFactory {

private static AuthClient authClient;
private static final String CLIENT_ID = "00000000XXXXX";


public static AuthClient getAuthClient(Context context) {
if (authClient == null)
authClient = new AuthClient(context, OneDriveOAuthConfig.getInstance(), CLIENT_ID);
return authClient;
}

}

最佳答案

使用 OneDrive SDK for Android 会更轻松,因为身份验证是一个简单得多的过程。

final MSAAuthenticator msaAuthenticator = new MSAAuthenticator() {
@Override
public String getClientId() {
return "<msa-client-id>";
}

@Override
public String[] getScopes() {
return new String[] { "onedrive.appfolder", "wl.offline_access"};
}
}

final IClientConfig oneDriveConfig = new DefaultClientConfig.createWithAuthenticator(msaAuthenticator);
final IOneDriveClient oneDriveClient = new OneDriveClient
.Builder()
.fromConfig(oneDriveConfig)
.loginAndBuildClient(getActivity());

这将处理用户身份验证流程,然后为您提供一个服务对象,使您可以直接与 OneDrive 进行交互。查看完整 example application .

关于android - 使用 Android 和 Rest API 了解 OneDrive 中的身份验证流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33982578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com