Android で Facebook SDK 3.0 を使用して、ウォールにステータスの更新を投稿しようとしています。ログインセッションは完璧で、投稿部分を除いてすべて正常に機能します.
wall への書き込み許可を与えた後。ウォールに投稿しません。アクティブなセッション部分を確認すると。ログに「OPENED」ではなく open_token_updated が表示されます - 書き込み許可を与える前に - ログには「OPENED」と表示されます...
アプリケーションを閉じて再度アプリケーションをロードすると、「OPENED」と表示され、ウォールに投稿できます。
ここに私がしようとしているものがあります:
check.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
boolean login = false;
if (Session.getActiveSession() != null)
{
login = true;
}
Log.e ("Session Active?", "" + Session.getActiveSession().getState());
}
});
//POST WALL BUTTON
post.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
if(Session.getActiveSession() != null)
{
if(Session.getActiveSession().getState()==SessionState.OPENED)
publishStory();
}
}
});
パブリッシュ方法はこちら
Session session = Session.getActiveSession();
if (session != null)
{
// Check for publish permissions
List<String> permissions = session.getPermissions();
if (!isSubsetOf(PERMISSIONS, permissions))
{
Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(this, PERMISSIONS);
session.requestNewPublishPermissions(newPermissionsRequest);
//return;
}
Log.e("after", "permissions");
Bundle postParams = new Bundle();
postParams.putString("name", "Sample Test from my app");
postParams.putString("caption", "The best");
postParams.putString("description","Testing how it works.");
postParams.putString("link", "http://www.google.com/");
postParams.putString("picture", "http://www.etftrends.com/wp-content/uploads/2012/07/blue_wave_of_water-wide.jpg");
Request.Callback callback = new Request.Callback()
{
public void onCompleted(Response response)
{
Log.e("post response",response.toString());
FacebookRequestError error = response.getError();
if (error != null)
{
Log.e ("No", "Not null");
}
else
{
Log.e ("No", "null");
JSONObject graphResponse = response.getGraphObject().getInnerJSONObject();
String postId = null;
try
{
postId = graphResponse.getString("id");
Toast.makeText(Sessionvalid.this, postId, Toast.LENGTH_LONG).show();
}
catch (JSONException e)
{
Log.i("JSON", "JSON error " + e.getMessage());
}
}
}
};
Request request = new Request(session, "me/feed", postParams, HttpMethod.POST, callback);
RequestAsyncTask task = new RequestAsyncTask(request);
task.execute();
}
SubSetMethod
private boolean isSubsetOf(Collection<String> subset, Collection<String> superset)
{
for (String string : subset)
{
if (!superset.contains(string))
{
return false;
}
}
return true;
}
OnActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}
私はここで何か間違ったことをしています..どこでどのように修正すればよいかわからない??