2012-08-23 7 views
5

ich einen mit flickrj-Android-2.0.0 und dem OAuth Fluss folgen. Ich bekomme den Zugriff-Token und Geheimnis auch, aber wenn ich versuche, das Foto auf flickr hochladen Ich bekomme den folgenden Fehler:Android: Wie Foto hochladen auf flickr mit flickrj-Android-2.0.0 android Bibliothek

com.googlecode.flickrjandroid.FlickrException: 99: Unzureichende Berechtigungen. Methode benötigt Schreibrechte; gelesen gewährt.

Auch habe ich die Erlaubnis geändert zu schreiben, wenn ich meinen api-Schlüssel und geheimen erschaffe, aber immer noch die gleichen Fehler.

Für das Hochladen von Foto verwende ich den untenstehenden Code bitte helfen Sie mir, das zu lösen Ich bin wirklich in diesem Teil stecken. nur

public void uploadPhoto(OAuth... params) 
      throws ParserConfigurationException { 
     OAuth oauth = params[0]; 
     OAuthToken token = oauth.getToken(); 
     RequestContext requestContext = RequestContext.getRequestContext(); 
     OAuth auth = new OAuth(); 
     auth.setToken(new OAuthToken(token.getOauthToken(), token 
       .getOauthTokenSecret())); 
     requestContext.setOAuth(auth); 
     Uploader up = new Uploader(FlickrHelper.API_KEY, FlickrHelper.API_SEC); 
     UploadMetaData uploadMetaData = new UploadMetaData(); 
     uploadMetaData.setTitle("hello world"); 
     try { 
      Drawable d = getResources().getDrawable(R.drawable.icon); 
      // the drawable (Captain Obvious, to the rescue!!!) 
      Bitmap bitmap = ((BitmapDrawable) d).getBitmap(); 
      ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
      bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); 
      byte[] bitmapdata = stream.toByteArray(); 
      System.out.println("Bitmap value= " + bitmapdata); 
      userIcon.setImageBitmap(bitmap); 
      up.upload("Hello From Emulator", bitmapdata, uploadMetaData); 

     } catch (FlickrException e) { 

      e.printStackTrace(); 

     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (SAXException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

Dank ...

+0

Siehe [this] (http://www.java2s.com/Code/Android/Development/UploadImagetoFlickrwithJSON.htm) und [dieses Beispiel] (http://blog.theunical.com/java/flickr-example-to- upload-photos-using-java /) auch. – Praveenkumar

+0

Wie ich bereits erwähnt habe ich bin mit dem Oauth Flow mir bitte sagen, wie kann ich das gleiche verwenden. – user1618714

+0

Haben Sie gelöst ?????? .. Ich bin mit diesem Problem konfrontiert ... –

Antwort

3

ich durch Änderung OAuthTask Klasse gelöst haben ... Das Problem war die Erlaubnis ... Permission.WRITE Setzen Sie statt Permission.READ

public class OAuthTask extends AsyncTask<Void, Integer, String> { 

// private static final Logger logger = LoggerFactory 
// .getLogger(OAuthTask.class); 
private static final Uri OAUTH_CALLBACK_URI = Uri 
     .parse(FlickrjAndroidSampleActivity.CALLBACK_SCHEME + "://oauth"); //$NON-NLS-1$ 

/** 
* The context. 
*/ 
private Context mContext; 

/** 
* The progress dialog before going to the browser. 
*/ 
private ProgressDialog mProgressDialog; 

/** 
* Constructor. 
* 
* @param context 
*/ 
public OAuthTask(Context context) { 
    super(); 
    this.mContext = context; 
} 

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    mProgressDialog = ProgressDialog.show(mContext, 
      "", "Generating the authorization request..."); //$NON-NLS-1$ //$NON-NLS-2$ 
    mProgressDialog.setCanceledOnTouchOutside(true); 
    mProgressDialog.setCancelable(true); 
    mProgressDialog.setOnCancelListener(new OnCancelListener() { 
     @Override 
     public void onCancel(DialogInterface dlg) { 
      OAuthTask.this.cancel(true); 
     } 
    }); 
} 

/* 
* (non-Javadoc) 
* 
* @see android.os.AsyncTask#doInBackground(Params[]) 
*/ 
@Override 
protected String doInBackground(Void... params) { 
    try { 
     Flickr f = FlickrHelper.getInstance().getFlickr(); 
     OAuthToken oauthToken = f.getOAuthInterface().getRequestToken(
       OAUTH_CALLBACK_URI.toString()); 
     saveTokenSecrent(oauthToken.getOauthTokenSecret()); 
     URL oauthUrl = f.getOAuthInterface().buildAuthenticationUrl(
       Permission.WRITE, oauthToken); 
     return oauthUrl.toString(); 
    } catch (Exception e) { 
     //   logger.error("Error to oauth", e); //$NON-NLS-1$ 
     return "error:" + e.getMessage(); //$NON-NLS-1$ 
    } 
} 

/** 
* Saves the oauth token secrent. 
* 
* @param tokenSecret 
*/ 
private void saveTokenSecrent(String tokenSecret) { 
    //  logger.debug("request token: " + tokenSecret); //$NON-NLS-1$ 
    FlickrjAndroidSampleActivity act = (FlickrjAndroidSampleActivity) mContext; 
    act.saveOAuthToken(null, null, null, tokenSecret); 
    //  logger.debug("oauth token secret saved: {}", tokenSecret); //$NON-NLS-1$ 
} 

@Override 
protected void onPostExecute(String result) { 
    if (mProgressDialog != null) { 
     mProgressDialog.dismiss(); 
    } 
    if (result != null && !result.startsWith("error")) { //$NON-NLS-1$ 
     mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri 
       .parse(result))); 
    } else { 
     Toast.makeText(mContext, result, Toast.LENGTH_LONG).show(); 
    } 
} 

} 

siehe Full Demo

enter image description here

+0

Haben Sie es versucht durch Änderung der Erlaubnis ?? –

+0

Herr, suche ich viele, aber ich mnot jede sdk für flickr bekommen –

+0

haben Sie dieses Flimmern API gesehen http://sourceforge.net/projects/flickrj/files/ –