2

私は Android 用に開発しており、現在認証に facebook-android-sdk を使用しています。私が見ることができることから、そのコードではアプリの秘密が使用されていません。これは素晴らしいことです。

Facebook が offline_access パーミッションを削除しようとしているので、アクセス トークンを拡張する必要があります。残念ながら、sdk の extendsAccessToken メソッドはスタンドアロンではなく、公式の Facebook アプリケーションをインストールする必要がありますが、これは私には受け入れられません。

そこで、extendAccessToken を直接実装することにしました (iphone SDK の実装と同様)。問題は、アクセス トークンを拡張するための HTTP 要求が client_secret フィールドを必要とすることです。これは、コード自体にアプリ シークレットを配置する必要があることを意味します。これは、簡単にリバース エンジニアリングできる Android/Java アプリケーションにとって、まったく安全とは言えません。

代替手段はありますか?

4

2 に答える 2

0

トークンの生成/拡張に関して、Android/iOS SDK についてこれまでに発見したことは次のとおりです。

SDK を使用してクライアント側でトークンを生成する 2 つの方法と、トークンを拡張する 3 つの方法を見つけました。

生成:

1) Facebook アプリ。SSO トークンを生成します

2) Web ブラウザー (iOS)/Web ダイアログ (Android/BB)。iOS では SSO トークンを生成し、Android/BB では非 SSO トークンを生成します

これらのトークンはすべて長期トークンです。

拡張:

1) iOS/Android アプリ。Android の場合は、ユーザーがアプリにサインインしている場合のみです。それ以外の場合、バインドされたサービスへの呼び出しは何も返さず、エラーも返しません。そのシナリオで iOS をテストしていません。

2) auth.extendSSOAccessToken。これは古い API のエンドポイントです。私が知る限り、公式アプリが存在しない場合でも iOS SDK はまだ使用しています。SSO で生成されていないトークン (Android ポップアップ ダイアログ) でこのエンドポイントを使用すると、エラー コード 10 が表示され、トークンが SSO で生成されなかったことを示すメッセージが表示されます。これにより、トークンが SSO 経由で生成されている限り、それが機能する可能性があると思われる可能性があります。あなたの疑いは間違っているでしょう。「Facebook アプリケーションのアクセストークンが提供されていません」というメッセージとともにエラーコード 100 が表示されます。これにより、私が知る限り、このメソッドは Android ではまったく役に立ちません。

3) oauth/access_token。これは、FB がロードマップで使用するように指示しているエンドポイントです。もちろん、この方法は a) apk の逆コンパイル/アンパッケージングを介して APP_SECRET を公開し (FB はそうしないことを強く推奨します)、b) 短期トークンを長期トークンに拡張する場合にのみ機能します。そのため、Android/iOS で返されるデフォルトの長期トークンから始める場合は、最初に短期トークンを生成してから、このメソッドでクライアント側 (安全でない) またはサーバー側 (安全でない) で拡張する必要があります。すべての人のために)。長期トークンから短期トークンをどのように生成しますか? 私が知っていたらいいのに =(.

これまでのところ、これを達成するためのアイデアはどこにも見つかりませんでした。誰かが知っている場合は、共有してください!

これにより、少なくともサーバーを持つ人々に、長期トークンを拡張するための安全な方法が提供されます.

于 2012-09-17T22:59:10.570 に答える
0

これを行うためのコードを独自のサーバーでホストし、サーバーへの呼び出しを介してクライアントにトークンを拡張させてみませんか?

于 2012-03-05T10:33:18.720 に答える