AndroidアプリからFBにログインするとき、ログインすることを期待して、最後の有効な認証キーと有効期限をFacebookオブジェクト(5分以内に作成)に提供します。
代わりに、「このアプリは既に承認されています」というダイアログが表示されます。これは明らかに悪いユーザーエクスペリエンスであり、これなしでユーザーにログインさせるためにできることをしたいと思います。
ログインのフローは
- 最後の有効な認証キーと有効期限を設定します
- authorize()を呼び出す
- 成功したら、この認証キーをサーバーに送信しました。サーバーは、キーがFBグラフAPIで有効であることを確認します。
これが私がこれを呼んでいる方法の縮小です:
Facebook m_facebook;
int ACTIVITY_CODE_FACEBOOK_AUTH = 1;
// auth key and expiration are set from a previous login
m_facebook.setAccessToken(accessToken);
m_facebook.setAccessExpires(expirationTime);
// permissions contains publish_stream, publish_actions, email and does not change.
m_facebook.authorize(m_activity, permissions, ACTIVITY_CODE_FACEBOOK_AUTH, new AppLoginListener());
考えられる回避策は、最初にauthキーを使用してGraph APIを呼び出し、それが有効であることを確認することです。有効でない場合は、上記のようにauthorize()を呼び出します。それが有効な場合は、承認を呼び出して続行するふりをしてください。これはハックのように感じます。姉妹化されたGraphAPIの回避策を作成しなくても、authorize()(およびSSOを使用)できるはずだと思います。
- FB SDKrom2012/4/4を使用しています。それ以降、関連する変更はないようです。
- 1年前からこれに似た質問を見てきましたが、問題を解決する具体的な答えは見ていません。また、解決策が私がすでに行っているものと異なっているようにも見えません。