Facebook をゲームに統合してユーザーのウォールにレコードを投稿しようとしていますが、ログイン後に権限を付与するウィンドウが表示され、それを受け入れると、他に何もせずにゲームを再開したいと思います。
セッションが開始されたとき、またはセッションがすでに開始されている場合に変数 ( useFacebook
) があります。手動で有効にすると、Facebook への投稿でエラーが発生します。true
false
true
これは関連するコードです:
@Override
public void onResumeGame() {
super.onResumeGame();
if (mServ != null)
{
mServ.resumeMusic();
}
checkFaceBook();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}
public void checkFaceBook()
{
Session.openActiveSession(this, false, new Session.StatusCallback()
{
@Override
public void call(Session session, SessionState state, Exception exception)
{
if (session.isOpened())
{
// Never enters here.
Request.executeMeRequestAsync(session, new Request.GraphUserCallback()
{
@Override
public void onCompleted(GraphUser user, Response response)
{
if (user != null)
{
fbUsername = user.getFirstName();
useFacebook = true;
}
}
});
}
}
});
}
public void facebookLogin()
{
Session.openActiveSession(this, true, new Session.StatusCallback()
{
@Override
public void call(Session session, SessionState state, Exception exception)
{
if (session.isOpened())
{
// Never enters here.
Request.executeMeRequestAsync(session, new Request.GraphUserCallback()
{
@Override
public void onCompleted(GraphUser user, Response response)
{
if (user != null)
{
// CALLBACK: USER IS LOGGED IN
// DO YOUR STUFF HERE
fbUsername = user.getFirstName();
useFacebook = true;
facebookFeedDialog("Test");
}
}
});
}
}
});
}
public void facebookFeedDialog(String message)
{
Bundle params = new Bundle();
params.putString("name", message);
params.putString("caption", "ccccc");
params.putString("description", "ddddd");
params.putString("link", "https://market.android.com/details?id="+this.getApplication().getPackageName().toString());
params.putString("picture", "http://www.myimage.com/01.jpg");
WebDialog feedDialog = (new WebDialog.FeedDialogBuilder(this, Session.getActiveSession(), params)).setOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(Bundle values, FacebookException error)
{
if (error == null)
{
final String postId = values.getString("post_id");
if (postId != null)
{
// POSTED
}
else
{
// POST CANCELLED
}
}
else if (error instanceof FacebookOperationCanceledException)
{
// POST CANCELLED
}
else
{
// ERROR POSTING
}
}
}).build();
feedDialog.show();
}
public boolean onSceneTouchEvent(Scene pScene,
TouchEvent pSceneTouchEvent) {
if (mFB.onAreaTouched(pSceneTouchEvent, pSceneTouchEvent.getX(), pSceneTouchEvent.getY()))
{
mClickSnd.play();
if (useFacebook == true)
{
facebookFeedDialog("Test");
}
else
{
facebookLogin();
}
return true;
}
return false;
}
そして、これらは私が得る画面です:
ありがとう。