我在登录后使用Fabric插件和
Android工作室我得到了会话,用户名和用户ID.还有电子邮件地址.但是找不到任何获取用户个人资料照片的选项.
/ /inti twitter client loginButton = (TwitterLoginButton) findViewById(R.id.twitter_login_button); loginButton.setCallback(new Callback<TwitterSession>() { @Override public void success(Result<TwitterSession> result) { // Do something with result,which provides a TwitterSession for making API calls System.out.println("twitter success"+result.data.getUserId()+result.data.getUserName()); gettwitteremail(); } @Override public void failure(TwitterException exception) { // Do something on failure } }); private void gettwitteremail(){ TwitterSession session = Twitter.getSessionManager().getActiveSession(); TwitterAuthToken authToken = session.getAuthToken(); String token = authToken.token; String secret = authToken.secret; TwitterAuthClient authClient = new TwitterAuthClient(); authClient.requestEmail(session,new Callback() { @Override public void success(Result result) { // Do something with the result,which provides // the email address System.out.println("twitter sucess"+result.data); } @Override public void failure(TwitterException exception) { // Do something on failure System.out.println("twitter sucess"+exception.getMessage()); exception.printStackTrace(); } });
固定
通过使用以下代码修复
TwitterSession session = Twitter.getSessionManager().getActiveSession(); TwitterAuthToken authToken = session.getAuthToken(); String token = authToken.token; String secret = authToken.secret; TwitterApiClient twitterApiClient = Twitter.getApiClient(); StatusesService twapiclient = twitterApiClient.getStatusesService(); twapiclient.userTimeline(twitteruserid,null,new Callback<List<Tweet>>() { @Override public void success(Result<List<Tweet>> listResult) { System.out.println("listResult"+listResult.data.size()); System.out.println("listResult"+listResult.data.get(0).user); System.out.println("listResult"+listResult.data.get(0).user.profileImageUrl); userInfo.imageurl = listResult.data.get(0).user.profileImageUrl; } @Override public void failure(TwitterException e) { } });
解决方法
尝试使用此代码获取用户个人资料照片.
public void getTwitterData(final TwitterSession session) { MyTwitterApiClient tapiclient = new MyTwitterApiClient(session); tapiclient.getCustomService().show(session.getUserId(),new Callback<User>() { @Override public void success(Result<User> result) { TwitterAuthToken authToken = session.getAuthToken(); String token = authToken.token; String secret = authToken.secret; name.setText(result.data.name); location.setText(result.data.location); new ImageDownloader(profileImageView) .execute(result.data.profileImageUrl); Log.d("Name",name); Log.d("city",location); } public void failure(TwitterException exception) { // Do something on failure exception.printStackTrace(); } }); **************** class MyTwitterApiClient extends TwitterApiClient { public MyTwitterApiClient(TwitterSession session) { super(session); } public CustomService getCustomService() { return getService(CustomService.class); } } interface CustomService { @GET("/1.1/users/show.json") void show(@Query("user_id") long id,Callback<User> cb); } ************ class ImageDownloader extends AsyncTask<String,Void,Bitmap> { ImageView bmImage; public ImageDownloader(ImageView bmImage) { this.bmImage = bmImage; } protected Bitmap doInBackground(String... urls) { String url = urls[0]; Bitmap mIcon = null; try { InputStream in = new java.net.URL(url).openStream(); mIcon = BitmapFactory.decodeStream(in); } catch (Exception e) { Log.e("Error",e.getMessage()); } return mIcon; } protected void onPostExecute(Bitmap result) { bmImage.setImageBitmap(result); } }