Facebookユーザーのフォトアルバムを見ることができるAndroidアプリを開発しています。Facebook開発者ツールを介して手動で生成されたHttpGetリクエストにアクセストークンを追加すると機能するソリューションがあります。
android / javaを介してそのようなアクセストークンを作成する適切な方法は何ですか?facebook android sdkを使用せずに入手する方法はありますか?
Facebookユーザーのフォトアルバムを見ることができるAndroidアプリを開発しています。Facebook開発者ツールを介して手動で生成されたHttpGetリクエストにアクセストークンを追加すると機能するソリューションがあります。
android / javaを介してそのようなアクセストークンを作成する適切な方法は何ですか?facebook android sdkを使用せずに入手する方法はありますか?
あなたのコメントに基づいて、私はいくつかの提案をさせてください。その前に、現在のシナリオについていくつか明確にしておきます。
アクセストークンが有効である限り、手動でデータを取得する方法がAccess Token
機能します。アクセストークンには有効期限があります。その後、新しいアクセストークンが割り当てられます。それが機能する限り、それはすべて良いです。アプリは問題なく動作し、ユーザーはクエリに従ってフォトアルバムを見ることができます。
アクセストークンの有効期限が切れると、難易度が始まります。Facebookは、有効期限が切れても親密な関係を築かないため、是正措置をいつ講じるべきかを知る方法がありません。
これで、にアクセストークンをハードコーディングしているためActivity
、アクセストークンの有効期限が切れるたびに、更新されたアクセストークンをプッシュして更新する必要があります。
うまくいけば、私がこれでどこに行くのかがわかります。
提案:
1:
物事を現状のままにしておくと、アクセストークンの有効期限が切れたときに、ユーザーの怒りに直面する必要があると思います(読み取り、否定的な評価、コメント)。言うまでもなく、期限切れのアクセストークンを修正するためだけに、ユーザーに変更、追加、または改善が表示されない場合に更新をプッシュする必要があります。これがどのように生産的な運動になるかわかりません。
二:
最も簡単な方法は、Facebook SDKをアプリに統合することです。これは、アクセストークンのような単純なものにはあまりにも大したことのように聞こえますが。これの(ユーザーにとっての)直接的な利点は、ユーザーが常にアプリをシームレスに体験できることです。そしてあなたにとって、それは私が以前にすでに話した多くの頭痛を救うでしょう。
結論
プラットフォームに関連するSDKを使用せずに、動的アクセストークンを取得する以外に方法はありません。この場合、android。データをプルするのと同じ方法を引き続き使用できますが、動的アクセストークンを使用します。
アクセストークンの詳細とその仕組みについては、次のリンクにアクセスしてください:https ://developers.facebook.com/docs/concepts/login/access-tokens-and-types/
新しい SDK のドキュメントを読みましたか? それは自動的にそれを行います。
public class MainActivity extends FacebookActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.openSession();
}
@Override
protected void onSessionStateChange(SessionState state, Exception exception) {
// user has either logged in or not ...
if (state.isOpened()) {
// make request to the /me API
Request request = Request.newMeRequest(
this.getSession(),
new Request.GraphUserCallback() {
// callback after Graph API response with user object
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
TextView welcome = (TextView) findViewById(R.id.welcome);
welcome.setText("Hello " + user.getName() + "!");
}
}
}
);
Request.executeBatchAsync(request);
}
}
}