在我的Android应用程序中制作Facebook应用程序以实现共享功能时,我想问一个小小的混乱
用于打开应用的唯一应用标识符
您希望Facebook启动的主要活动
android facebook facebook-graph-api facebook-android-sdk socialshare
我按照https://developers.facebook.com/docs/howtos/androidsdk/3.0/login-with-facebook/上的说明进行操作.当我触摸"登录"按钮时,会话状态是打开 - 始终.当我尝试将故事发布到用户的墙上时,我收到错误消息
"会话:尝试为具有待处理请求的会话请求新权限."
这是我的代码:
public class MainFragment extends Fragment {
private static final String TAG = "MainFragment";
private UiLifecycleHelper uiHelper;
private Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state,
Exception exception) {
onSessionStateChange(session, state, exception);
}
};
private void onSessionStateChange(Session session, SessionState state,
Exception exception) {
if (state.isOpened()) {
Log.d(TAG, "Logged in...");
} else if (state.isClosed()) {
Log.d(TAG, "Logged out...");
} else {
Log.d(TAG, "Unknown state: " + state);
}
}
@Override …Run Code Online (Sandbox Code Playgroud) 条件:Android设备安装了本机Facebook apk但已注销.
每次满足此条件并且用户尝试使用Facebook的LoginButton登录或手动执行(见下文),登录后,Facebook SDK始终要求访问用户数据的权限,即使用户已经授予权限.
这是我在我的应用程序上实现的代码:
版本1 - 登录按钮:
XML:
<com.facebook.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
Java的:
private static final List<String> PERMISSIONS = Arrays.asList("email", "user_groups");
private UiLifecycleHelper uiHelper;
@Override
protected void onCreate(Bundle savedInstanceState){
uiHelper = new UiLifecycleHelper(this, callback);
uiHelper.onCreate(savedInstanceState);
loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions(PERMISSIONS);
}
private Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
//modify interface or something
}
};
Run Code Online (Sandbox Code Playgroud)
版本2 - 手动
XML:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:onClick="buttonOnClick"
android:text="Login" />
Run Code Online (Sandbox Code Playgroud)
Java的: …
我已经设置了简单的Facebook登录.对于Android 2.3.6一切正常,用户获得提示登录对话框,输入数据和应用程序继续.我认为这是android版本的错误,但是当手机上安装了facebook应用程序时,它会发现登录不起作用!
测试了这一点:Galaxy Ace 2.3.6 HTC Desire 4.1.2 Galaxy Note 4.1.2 Android模拟器4.1.2
即使是facebook样本也无法正常工作!
每次应用程序执行时 - else {
Log.d("SESSION NOT OPENED", "SESSION NOT OPENED");
}
会议似乎没有打开,但为什么呢?按照本指南 - https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/
码:
Session.openActiveSession(this, true, new Session.StatusCallback() {
@Override
public void call(final Session session, SessionState state, Exception exception) {
if (session.isOpened()) {
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
Log.d("Access_token", session.getAccessToken());
}
}
});
} else {
Log.d("SESSION NOT OPENED", "SESSION NOT OPENED");
}
} …Run Code Online (Sandbox Code Playgroud) 我使用"ShareDialog"分享从我的应用程序到Facebook墙的链接.当我发布链接时,它仅在用户的时间轴中显示内容,而不是在主页中.我做错了什么?
我正在做那样的事情:
// This is how i invokes the shareDialog
FacebookDialog shareDialog = createShareDialogBuilderForLink().build();
private FacebookDialog.ShareDialogBuilder createShareDialogBuilderForLink() {
return new FacebookDialog.ShareDialogBuilder(this)
.setPicture("picture url")
.setName("name")
.setLink("link url");
}
Run Code Online (Sandbox Code Playgroud)
用户的时间表:

主页:

在主页中只显示应用程序的名称,该应用程序从我设置的链接(谷歌播放中的应用程序)中获取它,而不显示链接的内容(描述,名称,标题...).
我正在检查Android的支持库,但我不明白为什么他们分为v4和v7?
为什么不对所有版本使用一个支持库?甚至所有支持的课程都适用于SDK?
我在这里发帖是因为我遇到了问题.我正在开发一个新的Android应用程序,我想知道如何在用户断开连接时检测到(facebook注销按钮),因为我想在此时刷新我的UI.
我一直在看官方文件,但我一无所获.
android facebook facebook-android-sdk facebook-login facebook-access-token
我在Facebook开发者处收到以下警报:
'MyApp目前可以访问Graph API v2.2,该版本将在2017年3月27日达到其2年有效期.为确保平稳过渡,请将所有调用迁移到Graph API v2.3或更高版本.
我正在使用Facebook Android SDK 3.23.0.
我怎么知道这种Facebook Android SDK中使用的Graph API的版本?
谢谢
在通过Facebook_Android SDK发送请求时,我得到了一个包.有人可以解释它是什么数据类型以及如何提取数据?谢谢.
01-28 11:58:07.548: I/Values(16661): Bundle[{to[0]=100005099741441, to[1]=100005089509891, request=134129756751737}]
编辑 在这里,[i]是一个字符串数组.我能够做到.但我不认为这是正确的方法.
for(int i=0;i< size-1;i++){
System.out.println(values.getString("to["+i+"]"));
}
Run Code Online (Sandbox Code Playgroud)
size被称为Bundle的大小在哪里value
当我卸载Facebook App但没有安装Facebook App时,此代码运行良好.我正在使用Facebook SDK 4.0.
这是我的代码
package com.example.nhp04.gqfood;
import com.facebook.AccessToken;
import com.facebook.AccessTokenTracker;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.Profile;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
public class Login extends AppCompatActivity implements Animation.AnimationListener {
private String info = "";
private LoginButton loginButton;
private CallbackManager callbackManager;
private AccessTokenTracker tracker;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
setContentView(R.layout.activity_login);
loginButton = (LoginButton)findViewById(R.id.login_button);
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
AccessToken accessToken = loginResult.getAccessToken();
Profile …Run Code Online (Sandbox Code Playgroud)