【问题标题】:Facebook Error Invalid API KeyFacebook 错误 API 密钥无效
【发布时间】:2012-01-18 07:23:58
【问题描述】:

我正在尝试从我的 android 应用程序将图像发布到 facebook 墙上。我正在使用 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() 方法的方法调用总是返回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);
}

【问题讨论】:

    标签: android facebook api-key


    【解决方案1】:

    您尚未发布您的代码 sn-p,其中包括将图片发布到 Facebook 墙

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

    因此,请确保您为发布图像使用正确的键值对,并在添加附件和图像时要小心。

    尝试将图片发布到 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) {
        }
    }
    

    【讨论】:

    • 我正在使用以下方法在 facebook 上发布图像。这里有什么问题吗?
    • 对不起,我是 android 和 stackoverflow 的新手。当您说“如果您映射错误的键和值对,您将获得无效的 API 密钥。”时,我不明白您的意思。再次感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2020-10-13
    • 2011-06-28
    • 1970-01-01
    • 2016-02-27
    • 2017-02-11
    • 2022-09-30
    相关资源
    最近更新 更多