Android 框 API 在初始 OAuth 后无法运行
Android Box API unable to function after initial OAuth
我正在使用 Box API 和 Android。我正在使用 Android Studio 并在模拟器上进行测试。
我有一个用于启动 OAuth 请求的按钮,经过身份验证后,我 return 到我的应用程序,应该会显示一个不同的按钮来执行其他任务(我计划添加 get free/used/total space).
我正在使用以下代码,但是一旦我 return 到我的应用程序,另一个按钮就不会出现,如果我点击我的初始按钮,什么也不会发生。
谁能指出我正确的方向?
谢谢。
private void getUserIdUsingBox() {
BoxConfig.CLIENT_ID = BoxController.BOX_CLIENT_ID;
BoxConfig.CLIENT_SECRET = BoxController.BOX_SECRET;
BoxSession session = new BoxSession(this);
session.authenticate();
} //getUserIdsUsingBox
public void onLinkBox(View view) { getUserIdUsingBox(); }
private void invalidate() {
StringBuilder msg = new StringBuilder("List of available controllers: ");
for (Controller controller : mManager.getAvailableControllers()) {
msg.append("\n" + controller.getClass().getSimpleName());
}
mText.setText(msg);
List<LinkedAccount> linkedAccounts = mManager.getAvailableAccounts();
for (LinkedAccount acct : linkedAccounts) {
if (acct.getServiceName().equals(GoogleDriveController.NAME)) {
mLinkGoogleDriveButton.setVisibility(View.GONE);
mTestGoogleDriveButton.setVisibility(View.VISIBLE);
}
if (acct.getServiceName().equals(DropboxController.NAME)) {
mLinkDropboxButton.setVisibility(View.GONE);
mTestDropboxButton.setVisibility(View.VISIBLE);
}
if (acct.getServiceName().equals(BoxController.NAME))
{
mLinkBoxButton.setVisibility(View.GONE);
mTestBoxButton.setVisibility(View.VISIBLE);
}
}
}
正如 greg 所提到的——如果能看到您的 UI 逻辑,将会很有帮助。但是这样的事情应该有效:
final Button btnToAuthenticate = (Button) findViewById(R.id.auth_box_btn);
final Button btnAfterAuthenticate = (Button) findViewById(R.id.box_action_btn);
BoxConfig.CLIENT_ID = BoxController.BOX_CLIENT_ID;
BoxConfig.CLIENT_SECRET = BoxController.BOX_SECRET;
BoxSession session = new BoxSession(this);
btnToAuthenticate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mSession.authenticate();
}
});
mSession.setSessionAuthListener(new BoxAuthentication.AuthListener() {
@Override
public void onRefreshed(BoxAuthentication.BoxAuthenticationInfo boxAuthenticationInfo) {
}
@Override
public void onAuthCreated(BoxAuthentication.BoxAuthenticationInfo boxAuthenticationInfo) {
btnAfterAuthenticate.setVisibility(View.VISIBLE);
}
@Override
public void onAuthFailure(BoxAuthentication.BoxAuthenticationInfo boxAuthenticationInfo, Exception e) {
}
@Override
public void onLoggedOut(BoxAuthentication.BoxAuthenticationInfo boxAuthenticationInfo, Exception e) {
}
});
我正在使用 Box API 和 Android。我正在使用 Android Studio 并在模拟器上进行测试。
我有一个用于启动 OAuth 请求的按钮,经过身份验证后,我 return 到我的应用程序,应该会显示一个不同的按钮来执行其他任务(我计划添加 get free/used/total space).
我正在使用以下代码,但是一旦我 return 到我的应用程序,另一个按钮就不会出现,如果我点击我的初始按钮,什么也不会发生。
谁能指出我正确的方向?
谢谢。
private void getUserIdUsingBox() {
BoxConfig.CLIENT_ID = BoxController.BOX_CLIENT_ID;
BoxConfig.CLIENT_SECRET = BoxController.BOX_SECRET;
BoxSession session = new BoxSession(this);
session.authenticate();
} //getUserIdsUsingBox
public void onLinkBox(View view) { getUserIdUsingBox(); }
private void invalidate() {
StringBuilder msg = new StringBuilder("List of available controllers: ");
for (Controller controller : mManager.getAvailableControllers()) {
msg.append("\n" + controller.getClass().getSimpleName());
}
mText.setText(msg);
List<LinkedAccount> linkedAccounts = mManager.getAvailableAccounts();
for (LinkedAccount acct : linkedAccounts) {
if (acct.getServiceName().equals(GoogleDriveController.NAME)) {
mLinkGoogleDriveButton.setVisibility(View.GONE);
mTestGoogleDriveButton.setVisibility(View.VISIBLE);
}
if (acct.getServiceName().equals(DropboxController.NAME)) {
mLinkDropboxButton.setVisibility(View.GONE);
mTestDropboxButton.setVisibility(View.VISIBLE);
}
if (acct.getServiceName().equals(BoxController.NAME))
{
mLinkBoxButton.setVisibility(View.GONE);
mTestBoxButton.setVisibility(View.VISIBLE);
}
}
}
正如 greg 所提到的——如果能看到您的 UI 逻辑,将会很有帮助。但是这样的事情应该有效:
final Button btnToAuthenticate = (Button) findViewById(R.id.auth_box_btn);
final Button btnAfterAuthenticate = (Button) findViewById(R.id.box_action_btn);
BoxConfig.CLIENT_ID = BoxController.BOX_CLIENT_ID;
BoxConfig.CLIENT_SECRET = BoxController.BOX_SECRET;
BoxSession session = new BoxSession(this);
btnToAuthenticate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mSession.authenticate();
}
});
mSession.setSessionAuthListener(new BoxAuthentication.AuthListener() {
@Override
public void onRefreshed(BoxAuthentication.BoxAuthenticationInfo boxAuthenticationInfo) {
}
@Override
public void onAuthCreated(BoxAuthentication.BoxAuthenticationInfo boxAuthenticationInfo) {
btnAfterAuthenticate.setVisibility(View.VISIBLE);
}
@Override
public void onAuthFailure(BoxAuthentication.BoxAuthenticationInfo boxAuthenticationInfo, Exception e) {
}
@Override
public void onLoggedOut(BoxAuthentication.BoxAuthenticationInfo boxAuthenticationInfo, Exception e) {
}
});