Android アプリケーションから Facebook ウォールに画像を投稿しようとしています。私はfacebook SDKを使用しています。
接続と ID を取得するために呼び出すと、null ポインター例外が発生しますMainActivity
。FBConnectionActivity
私はこのような2つのメソッドを呼び出しています:-
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
setConnection();
getID();
}
}
ではFBConnectionActivity
、これら 2 つのメソッドは次のように定義されています。
public void setConnection() {
mContext = this;
mFacebook = Utility.mFacebook;
mAsyncRunner = new AsyncFacebookRunner(mFacebook);
}
public void getID(TextView txtUserName, ProgressBar progbar) {
username = txtUserName;
pb = progbar;
if (isSession()) {
Log.d(TAG, "sessionValid");
mAsyncRunner.request("me", new IDRequestListener());
} else {
// no logged in, so relogin
Log.d(TAG, "sessionNOTValid, relogin");
mFacebook.authorize(this, PERMS, new LoginDialogListener());
}
}
public void getID(){
if (isSession()) {
Log.d(TAG, "sessionValid");
mAsyncRunner.request("me", new IDRequestListener());
} else {
// no logged in, so relogin
Log.d(TAG, "sessionNOTValid, relogin");
mFacebook.authorize(this, PERMS, new LoginDialogListener());
}
}
への呼び出しisSession()
では、 method へのメソッド呼び出しはisSessionValid()
常に false を返します。
public boolean isSession() {
sharedPrefs = PreferenceManager.getDefaultSharedPreferences(mContext);
String access_token = sharedPrefs.getString("access_token", "x");
Long expires = sharedPrefs.getLong("access_expires", -1);
Log.d(TAG, access_token);
if (access_token != null && expires != -1) {
Log.e("isSession() method ", "acess_token : " + access_token );
mFacebook.setAccessToken(access_token);
mFacebook.setAccessExpires(expires);
}
return mFacebook.isSessionValid();
}
public boolean isSessionValid() {
return (getAccessToken() != null) &&
((getAccessExpires() == 0) ||
(System.currentTimeMillis() < getAccessExpires()));
}
セッションが有効でない場合、新しい有効なアクセス トークンを取得するにはどうすればよいですか。アプリケーションから画像をアップロードしようとするたびに、メソッドisSessionValid()
は false を返します。また、次のエラーが表示されます:-
01-18 12:46:35.928: D/Facebook-Example(28459): Response: {"error_code":101,"error_msg":"Invalid API key","request_args":[{"key":"method","value":"photos.upload"},{"key":"format","value":"json"}]}
01-18 12:46:35.948: W/Facebook-Example(28459): Facebook Error: Invalid API key
私を助けてください。
Facebookに画像を投稿するには、次の方法を使用しています。ここで何か問題がありますか?
public void postImageonWall() {
Log.e("BrowsePictureActivity ", "Inside postImageonWall method");
byte[] data = null;
Bitmap bi = BitmapFactory.decodeFile(selectedImagePath);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
data = baos.toByteArray();
Log.d("BrowsePictureActivity ", "data.length : " + data.length);
Bundle params = new Bundle();
params.putString("method", "photos.upload");
params.putByteArray("picture", data);
AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);
mAsyncRunner.request(null, params, "POST", new SampleUploadListener(),
null);
}