だから私はdropbox.jsで遊んでいます。github の入門ガイドでは、サインイン用のコード スニペットは次のとおりです。
client.authenticate(function(error, client) {
if (error) {
// Replace with a call to your own error-handling code.
//
// Don't forget to return from the callback, so you don't execute the code
// that assumes everything went well.
return showError(error);
}
// Replace with a call to your own application code.
//
// The user authorized your app, and everything went well.
// client is a Dropbox.Client instance that you can use to make API calls.
doSomethingCool(client);
});
背景:私は Dropbox.Drivers.Redirect ドライバーを使用しているため、client.authenticate() を呼び出すと、ユーザーは Dropbox サインイン ページに移動し、サインインしてアプリを承認し、ページ全体にリダイレクトされます。からプロセスが開始されました。
ただし、doSomethingCool() メソッド (または実際には、authenticate() に渡されたコールバックの一部) は、Dropbox にサインインしてページにリダイレクトした後、完全に無視されます。
ただし、authenticate() が呼び出されたときにユーザーが既にDropbox にサインインしている場合、dropbox.js はユーザーを dropbox.com に誘導するのではなく (現在のセッションが有効であることを内部的に検証しているだけだと思います)、コールバック (およびdoSomethingCool()) は実行されます!
私が実際にやりたいことは次のとおりです。私のページで、ユーザーは Web アプリケーションのストレージをバックアップする方法を選択しています。ユーザーが Dropbox にサインインし、私のページにリダイレクトされたら、この小さなセレクター画面ではなく、アプリのメイン部分に移動してもらいたいのです。ドロップボックスのサインイン後に別の返信アドレスを指定する方法はないようです。そのため、authenticate() のコールバックで window.location.replace を使用して手動で行うつもりでした。しかし、うまくいきません:(
1 つの代替手段は、client.authenticate() を呼び出す前に、AJAX を使用してドメインにフラグを送信し、ユーザーが OAuth フローにいることを示すことです。次に、セレクター画面がサーバーから再度要求されたときに (ドロップボックス サインイン後のリダイレクトを介して)、メイン アプリへの自動リダイレクトを実行します。でも、ちょっとめんどくさい(じゃない?)