ShareSDK中Facebook的登录与其他方式的登录方法一样。
1、在国内开发的话首先当然需要翻墙,翻墙软件很多,可以在网上搜一下,当然付费的较稳定些。
2、登录Facebook开放平台https://developers.facebook.com/,依次点击My Apps-->Add a New App
获取到你的key和secret
3、然后你的My Apps下就有了刚刚加入的app,点进去就可以看到key和secret了
依次点击Settings-->Advanced-->设置回调地址,回调地址可以自己设置,在配置中会用到
4、登录ShareSDK,下载ShareSDK for Android,解压后将sdk导入工程中,发现有两个包,ShareSDK和OneKeyShare,OneKeyShare是一个ShareSDK集成的快速分享功能的GUI工具,不用的话可以不用依赖这个包。
5、如果你已经登录ShareSDK,会有一个头像,点击头像-->进入后台,http://dashboard.mob.com/#/,点击ShareSDK
添加自己的应用即可,就可以获得key和secret
以上完成之后就开始写代码了
1、写ShareSDK.xml文件放在assets文件夹下
<ShareSDK
AppKey="a2e144b09d7a" />(在ShareSDK添加应用获得的key)
<Facebook
Id="8"
SortId="8"
ConsumerKey="492294290946990"
ConsumerSecret="81a1129e441bee32ab2d99401d734602"<pre name="code" class="java" style="color: rgb(102, 51, 102); font-size: 14px; font-weight: bold;"> (在Facebook添加应用获得的key和secret)
RedirectUrl="http://mob.com"
(在Facebook添加应用写的回调地址) Enable="true" />
2、清单文件
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<activity
android:name="com.mob.tools.MobUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateHidden|adjustResize">
</activity>
public class MainActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
ShareSDK.initSDK(this);
}
private void initView(){
Button tv_facebook=(Button) findViewById(R.id.tv_facebook);
tv_facebook.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.tv_facebook:
Platform facebook= ShareSDK.getPlatform(this, Facebook.NAME);
authorize(facebook);
break;
default:
break;
}
}
private void authorize(Platform plat) {
if (plat == null) {
return;
}
//判断指定平台是否已经完成授权
if(plat.isValid()) {
String userId = plat.getDb().getUserId();
if (userId != null) {
return;
}
}
plat.setPlatformActionListener(new PlatformActionListener() {
@Override
public void onError(Platform arg0, int arg1, Throwable arg2) {
// TODO Auto-generated method stub
Log.i("platform","LLLerror");
}
@Override
public void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) {
// TODO Auto-generated method stub
Log.i("platform","LLLcomplete");
}
@Override
public void onCancel(Platform arg0, int arg1) {
// TODO Auto-generated method stub
Log.i("platform","LLLcancel");
}
});
// true不使用SSO授权,false使用SSO授权
plat.SSOSetting(true);
//获取用户资料
plat.showUser(null);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
ShareSDK.stopSDK();
}
}