Ошибка Facebook: неверный ключ API - PullRequest
0 голосов
/ 18 января 2012

Я пытаюсь опубликовать изображение на стене Facebook из моего приложения для Android.Я использую Facebook SDK.

Из моего MainActivity, когда я звоню FBConnectionActivity, чтобы получить соединение и ID, я получаю исключение нулевого указателя

Я вызываю 2 метода, как это: -

view.setOnClickListener(new OnClickListener() {
     @Override
     public void onClick(View arg0) {
          setConnection();
          getID();
     }
}

В FBConnectionActivity эти два метода определены как:

    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(), вызов метода isSessionValid() всегдавозвращает ложь

 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);
}

1 Ответ

0 голосов
/ 18 января 2012

Вы не опубликовали свой фрагмент кода, который включает в себя публикацию изображения на стене Facebook

If you map wrong Key and Value Pair you will get Invalid API Key.

. Поэтому убедитесь, что вы используете правильную пару «ключ-значение» для сообщения Post, и будьте осторожны при добавлении вложений вместе с изображениями..

Попробуйте опубликовать изображение на стене Facebook:

private void postToWall(String accessToken) {   
    AsyncFacebookRunner mAsyncRunner = new   AsyncFacebookRunner(facebook);
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bm.compress(Bitmap.CompressFormat.PNG, 100, stream); // bm is bitmap object of your image
    byte[] byteArray = stream.toByteArray();
    Bundle param = new Bundle();
    param = new Bundle();
    param.putString("message", "All");
    param.putString("filename", "Test");
    param.putByteArray("image", byteArray);
    mAsyncRunner.request("me/photos", param, "POST", new fbRequestListener(), null);

}

public class fbRequestListener implements RequestListener {
    @Override
    public void onComplete(String response, Object state) {
    }
    @Override
    public void onIOException(IOException e, Object state) {
    }
    @Override
    public void onFileNotFoundException(FileNotFoundException e,Object state) {
    }

    @Override
    public void onMalformedURLException(MalformedURLException e,Object state) {
    }
    @Override
    public void onFacebookError(FacebookError e, Object state) {
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...