publish_stream リクエストを実行するには、本当にセッションを閉じて (たとえば、READ セッションから) PUBLISH の新しいアクティブなセッションを構築する必要がありますか?
もしそうなら(またはそうでない場合)、そうするための効果的な方法はありますか?
publish_stream リクエストを実行するには、本当にセッションを閉じて (たとえば、READ セッションから) PUBLISH の新しいアクティブなセッションを構築する必要がありますか?
もしそうなら(またはそうでない場合)、そうするための効果的な方法はありますか?
必要ありません。電話するだけsession.requestNewPublishPermissions(new Session.NewPermissionsRequest(this, PERMISSIONS));
ここで、PERMISSIONS は (適宜変更してください):
private static final List<String> PERMISSIONS = Arrays.asList("publish_actions");
完了したら、コールバックを取得します。
SessionState.OPENED_TOKEN_UPDATED
上記の状態を確認し、次のように呼び出してメッセージを再度投稿します。
Request statusRequest=Request.newStatusUpdateRequest(Session.getActiveSession(), mStatus.getText().toString(), reqestCallback);
if(statusRequest!=null){
statusRequest.executeAsync();
private class App_Session_StatusCallback implements Session.StatusCallback
{
@Override
public void call(Session session, SessionState state, Exception exception)
{
Log.d("asd", "state changed");
handleSessionStateChanged(session, state, exception);
}
}
private void handleSessionStateChanged(Session session, SessionState state, Exception exception)
{
if(state == SessionState.OPENED_TOKEN_UPDATED)
{
Request statusRequest=Request.newStatusUpdateRequest(Session.getActiveSession(), mStatus.getText().toString(), reqestCallback);
if(statusRequest!=null){
statusRequest.executeAsync();
}
}
if(session != null)
{
if(session.isOpened())
{
Log.d("asd", "session is opened");
Log.d("asd", "Token = " + session.getAccessToken());
Log.d("asd", "Expiry = " + session.getExpirationDate().toGMTString());
}
else
{
Log.d("asd", "session is NOT opened");
}
}
}
Session.getActiveSession().requestNewPublishPermissions(new Session.NewPermissionsRequest(this, Arrays.asList("publish_actions")));