Hallo zusammen,
ich bin gerade dabei Dropbox in meine App zu integrieren und habe hier ein Problem bei der Authentification.
Folgender Ablauf:
1. HTML Button „Authorize Dropbox“ klicken in der WebApp
2. Redirect zu Dropbox
3. User akzeptiert access zur Dropbox
4. Dropbox generiert einen Token
Hier mal ein Bild:
Schritt 1-3 funktionieren.
Bei Nr. 4 generiert mir Dropbox auch einen Code, aber ich bekomme dafür eine zusätzliche Seite bei Dropbox.com angezeigt.
Es gibt auch die Möglichkeit, dass Dropbox nach 3) automatisch zu einer definierten Seite zurückkehrt und den Access Token mitgibt.
Ich muss wohl den "HttpServletRequest" hierzu nutzen.
github.com
Hier mal mein Code:
JSF - Seite
Bean:
Hier die Methode, um die URL für die Weiterleitung zu generieren. Diese enthält dann die Info auf welche Applikation die Freigabe erteilt wird.
Die Info kommt auf APP_KEY, APP_SECRET -> Welche man in der Dropbox GUI erhält.
Was also mein Problem ist, wie befülle ich "HttpServletRequest request" ?
Und wie erhalte ich den Request zurück (der Token, der bei Schritt 4) zurückgegeben wird)
Danke für eure Hilfe.
ich bin gerade dabei Dropbox in meine App zu integrieren und habe hier ein Problem bei der Authentification.
Folgender Ablauf:
1. HTML Button „Authorize Dropbox“ klicken in der WebApp
2. Redirect zu Dropbox
3. User akzeptiert access zur Dropbox
4. Dropbox generiert einen Token
Hier mal ein Bild:

Schritt 1-3 funktionieren.
Bei Nr. 4 generiert mir Dropbox auch einen Code, aber ich bekomme dafür eine zusätzliche Seite bei Dropbox.com angezeigt.
Es gibt auch die Möglichkeit, dass Dropbox nach 3) automatisch zu einer definierten Seite zurückkehrt und den Access Token mitgibt.
Ich muss wohl den "HttpServletRequest" hierzu nutzen.
dropbox-sdk-java/DropboxAuth.java at master · dropbox/dropbox-sdk-java
A Java library for the Dropbox Core API. Contribute to dropbox/dropbox-sdk-java development by creating an account on GitHub.
Hier mal mein Code:
JSF - Seite
HTML:
<h:form>
<p:commandButton value="Connect Dropbox"
actionListener="#{cloudStorageEditController.connectDropbox()}" ajax="true" />
</h:form>
Bean:
Java:
/**
* Redirect to Dropbox
* @throws IOException
*/
public void connectDropbox() throws IOException {
String url = dropboxService.generateAuthorizeUrl(httpRequest, response);
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.redirect(ec.getRequestContextPath() + url);
}
Hier die Methode, um die URL für die Weiterleitung zu generieren. Diese enthält dann die Info auf welche Applikation die Freigabe erteilt wird.
Die Info kommt auf APP_KEY, APP_SECRET -> Welche man in der Dropbox GUI erhält.
Java:
public String generateAuthorizeUrl(HttpServletRequest request, HttpServletResponse response) {
// Only display important log messages.
// Read app info file (contains app key and app secret)
DbxAppInfo appInfo;
appInfo = new DbxAppInfo(APP_KEY, APP_SECRET);
// Run through Dropbox API authorization process
DbxRequestConfig requestConfig = new DbxRequestConfig("foo");
DbxWebAuth webAuth = new DbxWebAuth(requestConfig, appInfo);
DbxWebAuth.Request authRequest = DbxWebAuth.newRequestBuilder()
// After we redirect the user to the Dropbox website for authorization,
// Dropbox will redirect them back here.
.withRedirectUri("http://localhost:8080/portal/storageCloudHosterEdit.jsf", getSessionStore(request))
.build();
String authorizeUrl = webAuth.authorize(authRequest);
return authorizeUrl;
}
Was also mein Problem ist, wie befülle ich "HttpServletRequest request" ?
Und wie erhalte ich den Request zurück (der Token, der bei Schritt 4) zurückgegeben wird)
Danke für eure Hilfe.