Перейти к странице приложения Facebook после аутентификации с помощью единого входа
Я работаю над приложением, в котором мне нужно интегрировать социальные функции Facebook.
Я хочу использовать функцию единого входа (SSO), и когда пользователь нажмет кнопку в моем приложении, откроется веб-просмотр и покажет ему страницу моего приложения в Facebook, после того как пользователь прошел аутентификацию, и теперь он может делать то же, что и другие. вещи как аутентифицированный пользователь.
Я загрузил Facebook SDK и включил его в свой проект. Я также подписал свое приложение на странице разработчиков Facebook и получил APP-ID.
Вот как мой код выглядит до сих пор:
public class WebViewLike extends Activity {
private static final String TAG = "WebViewLike";
public static final String APP_ID = "1222222";
private Facebook facebook = new Facebook(APP_ID);
private WebView webView;
private Activity myActivity;
private final class WallWebChromeClient extends WebChromeClient {
public void onProgressChanged(WebView view, int progress)
{
myActivity.setTitle("Loading...");
myActivity.setProgress(progress * 100);
if(progress == 100)
myActivity.setTitle(R.string.app_name);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.view_weblike);
myActivity = this;
facebook.authorize(this, new DialogListener() {
@Override
public void onComplete(Bundle values) {
Log.d(TAG, "onComplete");
Log.d(TAG, "facebook.getAccessToken() " + facebook.getAccessToken());
Log.d(TAG, "facebook.getAccessExpires() " + facebook.getAccessExpires());
//Load the given URL
webView.loadUrl(getFacebookWallUrl());
}
@Override
public void onFacebookError(FacebookError error) {Log.d(TAG, "onComplete");}
@Override
public void onError(DialogError e) {Log.d(TAG, "onComplete");}
@Override
public void onCancel() {Log.d(TAG, "onComplete");}
});
initWebView();
}
private void initWebView() {
webView = (WebView) findViewById( R.id.likeWebView );
final WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(false);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setHorizontalScrollBarEnabled(false);
webView.setWebChromeClient(new WallWebChromeClient());
}
private String getFacebookWallUrl() {
Log.d(TAG, "facebook.getAccessToken() != null");
String wallUrl = "http://www.facebook.com/plugins/login.php?" + "href="
+ URLEncoder.encode("http://www.facebook.com/MyAppPage") + "&access_token="
+ URLEncoder.encode(facebook.getAccessToken());
Log.d(TAG, "wallUrl " + wallUrl);
return wallUrl;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "onActivityResult");
facebook.authorizeCallback(requestCode, resultCode, data);
}
}
На данный момент, когда я нажимаю кнопку, я перехожу к новому действию, которое говорит, что я уже авторизован, что означает, что SSO работает нормально. Проблема в том, что, когда я нажимаю кнопку «ОК», как я уже сказал, я хочу перейти на страницу своего приложения, но все, что я пробовал, показывает мою страницу приложения Facebook, но просит меня войти снова. С моей точки зрения мне нужно изменить началоwallUrl
строка наgetFacebookWallUrl()
метод, но я не могу найти никакой информации об этом.
Является ли это возможным?