1. Background
At the beginning of the year, the company's project had a new need to add Facebook and Twitter to the English version of the app.
2. Completion of the situation
Due to the urgency of this project, it took a week to develop this feature from pre-research to access. Later, after the first official English version, the time is not so urgent, the original use of the third-party library of Twitter sharing, rewritten, replaced by the official Twitter SDK access function, a week, so from the beginning of the preliminary research to the final version, the total time spent two weeks.
3. Pre-research and Access 3.1 Facebook
When I was in the pre-study on Facebook, it seemed to me that there was no difficult place and everything went well. Then look, with the author's memories, difficulties and problems may slowly surfaced.
Preparatory work:
1) from the above address can be downloaded to the Facebook official SDK;
2) Choose the Add a new app from your Account drop-down menu, then follow the inside steps to get it done, and you'll end up with a Facebook app id;
3) from the https://developers.facebook.com/docs/android/getting-started, you can see
Then to execute the place where one of the two command lines can be executed, you can get a public key and fill this out (note that the above command cannot be executed under most windows, so I recommend that you install a simulator similar to the one that can execute Linux commands)
That's all there is to get ready for, so here's the code access step.
1) Integrate the Facebook SDK into the project: put the Facebook SDK package that you downloaded in the preparation to the project, and then add the code to the Gralde file
Compile (name: ' facebook-android-sdk-4.10.0 ', ext: ' AAR ')
2) Add in Androidmanifest.xml
The app_id is the value obtained in the second step.
3) In the beginning of your main program, or your own rewrite of the Application class OnCreate () to add:
Facebooksdk.sdkinitialize (Getapplicationcontext ());
4) Build the content you want to share and call the share code,
Sharelinkcontent.builder Sharelinkcontentbuilder = new Sharelinkcontent.builder (); Sharelinkcontentbuilder.setcontentdescription (). Setcontenttitle (). Setcontenturl (); Sharelinkcontent sharelinkcontent = Sharelinkcontentbuilder.build (); if (Sharedialog.canshow (ShareLinkContent.class ) {sharedialog.show (Activity) Mcontext, sharelinkcontent);}
So that's pretty much what Facebook shares. If the reader can follow the author to this step, I believe that the goal is near.
3.2 Twitter
Next, I want to say a talk about the process and experience of Twitter sharing. Here I only introduce the use of official Twitter files to access Twitter features, as to how to use the third-party library to complete, the next time you are free to write another blog it. I think Twitter is a lot more complicated than Facebook's shared access. The operation involved is also more cumbersome than Facebook, but whatever, the author at this time can record this blog, finally can explain this thing passed, no matter what problems encountered, but also finally solved.
Detour
Things don't always go well in the direction we envision. This is especially evident in the author's Twitter-sharing process. First of all, I start by looking at the way the Web page to check the information. The first time I went to Twitter, the official introduction is at the following address Https://dev.twitter.com/oauth, where the main introduction is how the user access to the Twitter platform licensing method. Of course, the Twitter platform has an authorization process when the user logs in, but sometimes we don't see them as usual. So I went down this road, and then walked into the open source authorization code. Because this is a detour, so the author only introduced here, do not go forward, but if the reader can go all the way, it is too powerful. The author does not want to continue.
Path
Detour is still a little bit better, after all, life is not long.
https://docs.fabric.io/This site is the official Twitter document, interested can be viewed by themselves. I mainly introduce myself according to this document, and successfully carry out the steps of Twitter sharing.
Preparatory work:
1) Install a fabric plugin for your Android studio: Just open the plugins under Settings in Android Studio and a fabric for Android studio can be installed;
2) to https://apps.twitter.com/in the Create new app, follow the steps in the walk will get an app key and an app secret, note that if you want to push the function, then in this step, Do not forget to select Read, Write and Access Direct messages this radio button;
That's the point of getting ready for work.
Buildscript { repositories { jcenter () maven {URL ' https://maven.fabric.io/public '} } dependencies { classpath ' com.android.tools.build:gradle:1.5.0 ' //The Fabric Gradle plugin uses an open ended VE Rsion to react //quickly to Android tooling updates classpath ' io.fabric.tools:gradle:1.+ ' }}apply plugin: ' Com.android.application '//put Fabric plugin after Android pluginapply plugin: ' io.fabric ' repositories { jcenter ( ) maven {URL ' https://maven.fabric.io/public '}}
Copy this section of code to the first line of the main program's BUILD.GRADLD, where we declare a MAVEN library from which we can proceed with the subsequent download of the package.
Compile (' Com.twitter.sdk.android:twitter:[email protected] ') { transitive = true; } Compile (' Com.twitter.sdk.android:tweet-composer:[email protected] ') { transitive = true; } Compile (' Com.crashlytics.sdk.android:crashlytics:[email protected] ') { transitive = true; } Compile (' Com.twitter.sdk.android:tweet-ui:[email protected] ') { transitive = true; }
Copy this section of code into the file's dependencies to download the package. You can see a package that has nothing to do with Twitter, like Crashlytics. However, the author will be listed here, the lack of it or not, at least the program does not compile properly.
In the main program directory, create a file named Fabric.properties inside the Write
apisecret= secretapikey= in preparation for the work of the key
Here, this file will not have to move, wait for the plugin to be used, this file is automatically updated and replace the original secret value, these are normal.
The next step is to access the code.
1) Add in Androidmanifest.xml
Note that this value can not be changed, the direct copy can be;
2) in the beginning of their main program, or in the rewritten application class of OnCreate () to add
Twitterauthconfig authconfig = new Twitterauthconfig (Constants.twitter_api_key, Constants.twitter_api_secret); Fabric.with (This, new Twitter (authconfig)); Fabric.with (This, new Twittercore (authconfig), New Tweetui ()); Fabric.with (This, new Twittercore (authconfig), New Tweetcomposer (), New Crashlytics ());
This is to load your authorization information;
3) If your project is to be confused, add it in the obfuscation code
-dontwarn Com.squareup.okhttp.**-dontwarn Com.google.appengine.api.urlfetch.**-dontwarn Rx.**-dontwarn retrofit.** -keepattributes signature-keepattributes *annotation*-keep class com.squareup.okhttp.** {*;} -keep interface com.squareup.okhttp.** {*;} -keep class retrofit.** {*;} -keepclasseswithmembers class * { @retrofit. http.*;}
4) Write the official Twitter login button to your own layout file.
And in the program can over Findviewbyid () find this button, by the following method
Loginbutton = (Twitterloginbutton) Findviewbyid (R.id.login_button); Btnshowtweet = (Button) Findviewbyid (R.id.btn_show_tweet); Lltweets = (linearlayout) Findviewbyid (r.id.ll_tweets); Btnshowtweet.setonclicklistener (this); Loginbutton.setcallback (New Callback () {@Override public void success (result result) { Do something with result, which provides a twittersession for making API calls Twitterauthtoken autht Oken = Result.data.getAuthToken (); String token = Authtoken.token; String secret = Authtoken.secret; Toast.maketext (mainactivity.this, token + "" + Secret, Toast.length_long). Show (); Compose a tweet tweetcomposer.builder Builder = new Tweetcomposer.builder (mainactivity.this) . Text ("Just setting up my Fabric.") . Image (Getimguri ()); Builder.show (); LOad tweets//tweetutils.loadtweets (tweetids, New callback> () {//@Override// public void Success (Result> Result) {//for (Tweet tweet:result.data) {// Lltweets.addview (New Tweetview (Mainactivity.this, tweet));//}// }////@Override//public void failure (Twitterexception e) {//// }// }); App card//final Twittersession session = Twittercore.getinstance (). Getsessionmanager (). Getactivesession ( );//FINAL card = new Card.appcardbuilder (mainactivity.this). Imageuri (Getimguri ()). Googleplayid ("COM.M Edzone.twitterpic "). Build ();//FINAL Intent Intent = new Composeractivity.builder (mainactivity.this). Sessio N (session). Card. Createintent ();//startactivity (intent); } @OveRride public void failure (Twitterexception exception) {//does something on failure Toast.maketext (Mainactivity.this, "Error", Toast.length_long). Show (); LOG.D ("HSC", Exception.getmessage ()); } }); } @Override protected void Onactivityresult (int requestcode, int resultcode, Intent data) {Super.onactivityr Esult (Requestcode, ResultCode, data); Pass the activity result to the login button. Loginbutton.onactivityresult (Requestcode, ResultCode, data); }
It is important to note that your code should be written inside success () or your login information will be lost, of course, if the reader can find a solution, naturally no
Android Facebook and Twitter share