メッセージをウォール (またはその他) に投稿するために、必ずしも Facebook アプリ センターでアプリを作成する必要はありません。私もFacebookをサポートするゲームを作成しています。リンクとキャプション付きの写真を投稿していますが、同じ問題でゲームがFacebookアプリセンターに追加されていません。
まず、https: //developers.facebook.com/apps でアプリを作成しました。AppId (API KEY) を覚えておく必要があります。Android タブでアプリを有効にして、ハッシュコードを入力します。コマンドを使用してキーストアから作成されたハッシュコードkeytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
。「androiddebugkey」はキーの名前 (エクスポート用) で、「~/.android/debug.keystore」はキーストア (エクスポート用) です。
写真を投稿している私のクラスがあります
public class EveryBodyActivity extends Activity {
public final String API_KEY = "YOUR API KEY HERE";
public final String[] permissions = {"publish_stream"};
Facebook facebook = new Facebook(API_KEY);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageButton imageButton = (ImageButton)findViewById(R.id.button);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
authorizeAndPostMassage();
}
});
}
public void authorizeAndPostMassage() {
facebook.authorize(this, permissions, Facebook.FORCE_DIALOG_AUTH, new DialogListener () {
@Override
public void onComplete(Bundle values) {
Toast.makeText(EveryBodyActivity.this, "Authorization successful", Toast.LENGTH_SHORT).show();
postMassage();
}
@Override
public void onFacebookError(FacebookError e) {
Toast.makeText(EveryBodyActivity.this, "Facebook error, try again later", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(DialogError e) {
Toast.makeText(EveryBodyActivity.this, "Error, try again later", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
//Этот коллбэк никогда не срабатывает, вероятно, ошибка в SDK
Toast.makeText(EveryBodyActivity.this, "Authorization canceled", Toast.LENGTH_SHORT).show();
}});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
facebook.authorizeCallback(requestCode, resultCode, data);
}
private void postMassage() {
Bundle imageBundle = new Bundle();
imageBundle.putString(Facebook.TOKEN, facebook.getAccessToken());
imageBundle.putString("method", "photos.upload");
imageBundle.putString("caption", "New Voodoo Doll");
byte[] data = null;
Bitmap bi = BitmapFactory.decodeResource(getResources(),
R.drawable.ic_launcher);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
data = baos.toByteArray();
imageBundle.putByteArray("picture", data);
Toast.makeText(EveryBodyActivity.this, "Sending VooDoo...", Toast.LENGTH_SHORT).show();
try {
facebook.request(null, imageBundle, "POST");
} catch (FileNotFoundException fileNotFoundException) {
Toast.makeText(getApplicationContext(), (fileNotFoundException.getMessage()), 100);
} catch (MalformedURLException malformedURLException) {
Toast.makeText(getApplicationContext(), (malformedURLException.getMessage()), 100);
} catch (IOException ioException) {
Toast.makeText(getApplicationContext(), (ioException.getMessage()), 100);
}
}