使用Facebook SDK 4.10.0 Android无法获取用户Facebook提要
我在Android应用程序中使用Facebook登录。我已成功登录Facebook,但没有收到特定用户的订阅源。i、 e该用户在Facebook上发布的帖子 我试过的是下面的样子使用Facebook SDK 4.10.0 Android无法获取用户Facebook提要,facebook,facebook-graph-api,android-activity,android-facebook,facebook-sdk-4.x,Facebook,Facebook Graph Api,Android Activity,Android Facebook,Facebook Sdk 4.x,我在Android应用程序中使用Facebook登录。我已成功登录Facebook,但没有收到特定用户的订阅源。i、 e该用户在Facebook上发布的帖子 我试过的是下面的样子 package com.cloudant_db_demo.android02.insightnewapp; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity;
package com.cloudant_db_demo.android02.insightnewapp;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import com.facebook.AccessToken;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.GraphRequest;
import com.facebook.GraphResponse;
import com.facebook.HttpMethod;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import com.ibm.watson.developer_cloud.personality_insights.v2.PersonalityInsights;
import com.ibm.watson.developer_cloud.personality_insights.v2.model.Profile;
import com.twitter.sdk.android.Twitter;
import com.twitter.sdk.android.core.Callback;
import com.twitter.sdk.android.core.Result;
import com.twitter.sdk.android.core.TwitterAuthConfig;
import com.twitter.sdk.android.core.TwitterCore;
import com.twitter.sdk.android.core.TwitterException;
import com.twitter.sdk.android.core.TwitterSession;
import com.twitter.sdk.android.core.identity.TwitterLoginButton;
import com.twitter.sdk.android.core.models.Tweet;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import io.fabric.sdk.android.Fabric;
public class MainActivity extends AppCompatActivity {
// Note: Your consumer key and secret should be obfuscated in your source code before shipping.
private static final String TWITTER_KEY = "twitter_key";
private static final String TWITTER_SECRET = "twitter_secret";
CallbackManager callbackManager;
private TwitterLoginButton twitterLoginButton;
TwitterSession twitterSession;
LoginButton fb_login_button;
AccessToken mAccessToken;
public static String social_email = "", social_id = "", social_feed = "", social_name = "", social = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
Fabric.with(this, new Twitter(authConfig));
setContentView(R.layout.activity_main);
List<String> permissions = new ArrayList<String>();
permissions.add("user_posts");
fb_login_button = (LoginButton) findViewById(R.id.login_button);
fb_login_button.setReadPermissions(permissions);
//Facebook CallBack
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_status", "user_posts"));
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
mAccessToken = loginResult.getAccessToken();
social_id = mAccessToken.getUserId();
social = "fb";
Bundle params = new Bundle();
params.putString("fields", "user_posts");
/* make the API call for Feed */
new GraphRequest(AccessToken.getCurrentAccessToken(), "/" + social_id + "/feed/", null, HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
Log.e("Fb Feed: ", response.toString());
social_feed = social_feed + " " + response.toString() + " ";
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
callWatsonAPI(social);
}
});
thread.start();
}
}).executeAsync();
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException exception) {
}
});
//Twitter CallBack
twitterLoginButton = (TwitterLoginButton) findViewById(R.id.twitter_login_button);
twitterLoginButton.setCallback(new Callback<TwitterSession>() {
@Override
public void success(Result<TwitterSession> result) {
twitterSession = result.data;
social_id = Long.toString(twitterSession.getUserId());
social_name = twitterSession.getUserName();
getUserTweets();
}
@Override
public void failure(TwitterException e) {
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
twitterLoginButton.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
void getUserTweets() {
TwitterCore.getInstance().getApiClient(twitterSession).getStatusesService()
.userTimeline(null,
social_name,
null,
null,
null,
null,
null,
null,
null,
new Callback<List<Tweet>>() {
@Override
public void success(final Result<List<Tweet>> result) {
new Thread(new Runnable() {
@Override
public void run() {
try {
for (Tweet t : result.data) {
social_feed = social_feed + " " + t.text.toString() + " ";
}
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
callWatsonAPI(social);
}
});
thread.start();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}).start();
}
@Override
public void failure(TwitterException exception) {
android.util.Log.d("twittercommunity", "exception " + exception);
}
});
}
void callWatsonAPI(String social) {
PersonalityInsights service = new PersonalityInsights();
service.setUsernameAndPassword("27324e40-6c74-44f0-a3b9-9659cf5b4ed5", "eGXEQ8EGpVTl");
service.setEndPoint("https://gateway.watsonplatform.net/personality-insights/api");
Profile profile = service.getProfile(social_feed);
/*Log.e("Watson Response: ", "" + profile);*/
if (social.equals("fb")) {
Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("watson_res", profile.toString());
intent.putExtra("Fb Feed", social_feed);
startActivity(intent);
} else {
Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("watson_res", profile.toString());
intent.putExtra("Twitter Feed", social_feed);
startActivity(intent);
}
}
}
package com.cloudant_db_demo.android02.insightnewapp;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.util.Log;
导入com.facebook.AccessToken;
导入com.facebook.CallbackManager;
导入com.facebook.facebook回调;
导入com.facebook.facebook异常;
导入com.facebook.FacebookSdk;
导入com.facebook.GraphRequest;
导入com.facebook.GraphResponse;
导入com.facebook.HttpMethod;
导入com.facebook.login.LoginManager;
导入com.facebook.login.LoginResult;
导入com.facebook.login.widget.LoginButton;
导入com.ibm.watson.developer\u cloud.personality\u insights.v2.PersonalityInsights;
导入com.ibm.watson.developer\u cloud.personality\u insights.v2.model.Profile;
导入com.twitter.sdk.android.twitter;
导入com.twitter.sdk.android.core.Callback;
导入com.twitter.sdk.android.core.Result;
导入com.twitter.sdk.android.core.TwitterAuthConfig;
导入com.twitter.sdk.android.core.TwitterCore;
导入com.twitter.sdk.android.core.TwitterException;
导入com.twitter.sdk.android.core.twitter会话;
导入com.twitter.sdk.android.core.identity.TwitterLoginButton;
导入com.twitter.sdk.android.core.models.Tweet;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入io.fabric.sdk.android.fabric;
公共类MainActivity扩展了AppCompatActivity{
//注意:您的消费者密钥和密码应该在出厂前在源代码中进行模糊处理。
私有静态最终字符串TWITTER\u KEY=“TWITTER\u KEY”;
私有静态最终字符串TWITTER\u SECRET=“TWITTER\u SECRET”;
CallbackManager CallbackManager;
私有TwitterLoginButton TwitterLoginButton;
twitter会话twitter会话;
登录按钮fb_登录按钮;
AccessToken MacAccessToken;
公共静态字符串social_email=“”、social_id=“”、social_feed=“”、social_name=“”、social=“”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
sdkinInitialize(getApplicationContext());
TwitterAuthConfig authConfig=新的TwitterAuthConfig(TWITTER\u密钥,TWITTER\u秘密);
Fabric.with(this,newtwitter(authConfig));
setContentView(R.layout.activity_main);
列表权限=新建ArrayList();
权限。添加(“用户_帖子”);
fb_login_按钮=(login按钮)findviewbyd(R.id.login_按钮);
fb_登录_按钮。设置读取权限(权限);
//Facebook回拨
callbackManager=callbackManager.Factory.create();
LoginManager.getInstance().logInWithReadPermissions(这是,Arrays.asList(“public\u profile”、“user\u status”、“user\u posts”));
LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
MacAccessToken=loginResult.getAccessToken();
social_id=mAccessToken.getUserId();
社会性=“fb”;
Bundle params=新Bundle();
参数putString(“字段”、“用户帖子”);
/*对提要进行API调用*/
新GraphRequest(AccessToken.getCurrentAccessToken(),“/”+social_id+“/feed/”,null,HttpMethod.GET,
新建GraphRequest.Callback(){
未完成公共空白(图形响应){
Log.e(“Fb提要:,response.toString());
社交订阅源=社交订阅源+“”+response.toString()+“”;
Thread Thread=新线程(new Runnable(){
@凌驾
公开募捐{
卡拉瓦索纳皮(社会);
}
});
thread.start();
}
}).executeAsync();
}
@凌驾
公开作废{
}
@凌驾
public void onError(facebook异常){
}
});
//推特回调
twitterLoginButton=(twitterLoginButton)findViewById(R.id.twitter_login_按钮);
setCallback(newcallback()){
@凌驾
公开作废成功(结果){
twitterSession=result.data;
social_id=Long.toString(twitterSession.getUserId());
social_name=twitterSession.getUserName();
getUserTweets();
}
@凌驾
公共无效失败(Twittere异常){
}
});
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
onActivityResult(请求代码、结果代码、数据);
callbackManager.onActivityResult(请求代码、结果代码、数据);
}
void getUserTweets(){
TwitterCore.getInstance().getApiClient(twitterSession.GetStatuseService())
.userTimeline(空,
社会名号,
无效的
无效的
无效的
无效的
无效的
无效的
无效的
新回调函数(){
@凌驾
公开作废成功(最终结果){
新太尔