您是否找到解決方案?
檢查下面的鏈接後,我最終爲我的問題創建瞭解決方案。 的Satellizer文檔中https://github.com/sahat/satellizer/issues/269
基本上解釋說,供應商和httpOptions是你可以通過取消鏈接發送呼叫的參數,但是,從來沒有選項被傳遞,因爲它只能檢索來自這是供應商的第一個參數的信息。
您可以在satellizer.js文件的下面一段代碼中看到更多關於可接受參數的信息。
OAuth.prototype.unlink = function (provider, httpOptions) {
if (httpOptions === void 0) { httpOptions = {}; }
httpOptions.url = httpOptions.url ? httpOptions.url : joinUrl(this.SatellizerConfig.baseUrl, this.SatellizerConfig.unlinkUrl);
httpOptions.data = { provider: provider } || httpOptions.data;
httpOptions.method = httpOptions.method || 'POST';
httpOptions.withCredentials = httpOptions.withCredentials || this.SatellizerConfig.withCredentials;
return this.$http(httpOptions);
};
我不那麼優雅的解決方案是如下:
HTML
<button class="btn btn-sm btn-danger float-left" ng-if="user.facebook"
ng-click="unlink({provider:'facebook', options: {'param1':'value','param2':'value2'}})"><i class="ion-social-facebook"></i> Unlink Facebook Account
</button>
我已經基本包裹我想通過可變提供商發送的信息中(改名不僅僅是數據) JS代碼如下。
//unlink a social login profile from user's profile
$scope.unlink = function (data) {
console.log(data);
$auth.unlink(data)
.then(function() {
toastr.info('You have unlinked a ' + data.provider + ' account');
$scope.getProfile();
})
.catch(function (response) {
toastr.error(response.data ? response.data.message : 'Could not unlink ' + data.provider + ' account', response.status);
});
的JSON通過查看已發送的並不漂亮,但工程:
provider Object
provider "facebook"
options Object
flag "unlink"
view "profile"
userId 236
以上的沒有解決的問題404解決,但參數從原來的satellizer取消鏈接功能的流逝。
與路由問題是因爲Laravel被阻止在文件Authenticate.php該路由功能「公共職能手柄($請求,關閉$未來)」的內部
可以醚路線沒有middware像這樣
Route::post('auth/unlink', '[email protected]');
Route::get('auth/unlink', '[email protected]');
Route::any('auth/unlink', '[email protected]');
以上將確保呼叫將打到控制器一個或另一個。如何獲取控制器中的參數將取決於您選擇post/get/any。這意味着你將
public function unlink(Request $request)
檢索通過Laravel變量$請求參數或在這裏使用輸入門面這樣
$input = Input::all();
你可以做你想要傳遞的變量值什麼的。現在取決於你的處理。
注:
OAuth.prototype.unlink = function (provider, httpOptions) {
if (httpOptions === void 0) { httpOptions = {}; }
httpOptions.url = httpOptions.url ? httpOptions.url : joinUrl(this.SatellizerConfig.baseUrl, this.SatellizerConfig.unlinkUrl);
httpOptions.data = { provider: provider } || httpOptions.data;
httpOptions.method = httpOptions.method || 'POST';
httpOptions.withCredentials = httpOptions.withCredentials || this.SatellizerConfig.withCredentials;
return this.$http(httpOptions);
};
並沒有真正幫助時與Laravel示例的代碼:該satellizer代碼集默認方法,如果沒有方法在httpOptions過去了,你可以看到後下調用get方法的路由不是post,在js例子中,沒有http的選項被設置爲get。意思是你試圖打電話找到郵政是默認的地方,因此路線永遠不會工作。
對不起,如果我不是更清楚,因爲這是我第一次嘗試把我的想法放在這裏,英語不是真正的我的第一語言。
祝你好運。