2012-11-01 3 views
5

私のアプリケーションには、サーバー上でいくつかのコンテンツを送信し、(必要)Facebookに投稿する機能があります。それは送信するためのサービスを使用します(私はsqliteを使用しているストアデータ用)。サービスからfacebookセッションe.t.cを処理することは可能ですか?コンテンツがDBに格納され、送信時間が異なる可能性があるため(接続が非常に長く失われ、接続が利用可能になった後に送信が開始される可能性がありますが、アプリケーションの送信サービスのみがこの時間)。私はこのケースのための解決策を見つけることができません(そして良い解決策は素晴らしいでしょう)。助けてください。サービスからfacebook android sdkを使用する

答えて

4

ユーザーはアプリケーションに明示的にアクセス許可を与え、AndroidサービスはActivity.startActivityForResult()をサポートしていないため、サービスを再認証してセッションを開いたり新しい権限を追加することはできません。

ただし、アプリのアクティビティの1つでセッションを開いたり再認証すると、セッションの状態はデフォルトでSharedPreferencesに保存されます。この後にサービスがセッションを作成すると、SessionState.CREATED_TOKEN_LOADEDになります。 Session.getState()がCREATED_TOKEN_LOADEDの場合、SessionはUIを持たないopenForRead()が可能であることが保証され、nullアクティビティを渡すことは合法です。セッションには、アクティビティによって保存されたすべての権限が与えられます。

はこのすべてを簡素化するために、あなたのサービスは単に呼び出すことができます。

Session session = Session.openActiveSession(this); 

この呼び出しは、有効なトークンがSharedPreferencesでなかった場合はnullを返します。

アプリのUIに設定領域がある場合は、最初に保存されたトークンを簡単に取得するには、設定パネルの1つとしてLoginFragmentを含めることです。これにより、ユーザーはログイン/ログアウトできるようになり、セッション状態を保存して、サービスが同じアプリ内にある場合にサービスを取得できるようにする必要があります。

関連する問題