facebook sdk4 android 获取配置文件
facebook sdk4 android getprofile
我遇到了这个问题:当我尝试执行该方法时 "Profile.getprofile()"
它 returns 即使使用 ProfileTracker 也是空的。
这是我的代码:
public class Login extends Activity implements OnClickListener,ConnectionCallbacks, OnConnectionFailedListener {
//TODO Facebook
ProfileTracker mProfileTracker;
private CallbackManager callbackManager;
final List<String> permisos = new ArrayList<String>();
private FacebookCallback<LoginResult> fb = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
mProfileTracker = new ProfileTracker() {
@Override
protected void onCurrentProfileChanged(Profile profile, Profile profile2) {
}
};
mProfileTracker.startTracking();
AccessToken token = loginResult.getAccessToken();
Profile user = Profile.getCurrentProfile();
String name = user.getName();
Toast.makeText(Login.this, "Connected "+name , Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
};
我的 onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.init_login);
imgFacebook = (ImageView) findViewById(R.id.login_img_facebook);
imgFacebook.setOnClickListener(this);
permisos.add("user_friends");
permisos.add("public_profile");
LoginManager.getInstance().setLoginBehavior(LoginBehavior.SUPPRESS_SSO);
LoginManager.getInstance().registerCallback(callbackManager, fb);
}
我的点击:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.login_img_facebook:
LoginManager.getInstance().logInWithReadPermissions(this,permisos);
break;
}
}
我的 onActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
我将此添加到我的清单中:
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
<activity android:name="com.facebook.FacebookActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
顺便说一下,我使用的是 eclipse 而不是 Android Studio
代码放置错误
AccessToken token = loginResult.getAccessToken();
Profile user = Profile.getCurrentProfile();
String name = user.getName();
Toast.makeText(Login.this, "Connected "+name , Toast.LENGTH_LONG).show();
以上代码应放在跟踪器的函数中
mProfileTracker = new ProfileTracker() {
@Override
protected void onCurrentProfileChanged(Profile profile, Profile profile2) {
// Place above code here...
}
};
我遇到了这个问题:当我尝试执行该方法时 "Profile.getprofile()" 它 returns 即使使用 ProfileTracker 也是空的。
这是我的代码:
public class Login extends Activity implements OnClickListener,ConnectionCallbacks, OnConnectionFailedListener {
//TODO Facebook
ProfileTracker mProfileTracker;
private CallbackManager callbackManager;
final List<String> permisos = new ArrayList<String>();
private FacebookCallback<LoginResult> fb = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
mProfileTracker = new ProfileTracker() {
@Override
protected void onCurrentProfileChanged(Profile profile, Profile profile2) {
}
};
mProfileTracker.startTracking();
AccessToken token = loginResult.getAccessToken();
Profile user = Profile.getCurrentProfile();
String name = user.getName();
Toast.makeText(Login.this, "Connected "+name , Toast.LENGTH_LONG).show();
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
};
我的 onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.init_login);
imgFacebook = (ImageView) findViewById(R.id.login_img_facebook);
imgFacebook.setOnClickListener(this);
permisos.add("user_friends");
permisos.add("public_profile");
LoginManager.getInstance().setLoginBehavior(LoginBehavior.SUPPRESS_SSO);
LoginManager.getInstance().registerCallback(callbackManager, fb);
}
我的点击:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.login_img_facebook:
LoginManager.getInstance().logInWithReadPermissions(this,permisos);
break;
}
}
我的 onActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
我将此添加到我的清单中:
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
<activity android:name="com.facebook.FacebookActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
顺便说一下,我使用的是 eclipse 而不是 Android Studio
代码放置错误
AccessToken token = loginResult.getAccessToken();
Profile user = Profile.getCurrentProfile();
String name = user.getName();
Toast.makeText(Login.this, "Connected "+name , Toast.LENGTH_LONG).show();
以上代码应放在跟踪器的函数中
mProfileTracker = new ProfileTracker() {
@Override
protected void onCurrentProfileChanged(Profile profile, Profile profile2) {
// Place above code here...
}
};